簡體   English   中英

zsh 腳本未發出預期的啟用/禁用 output

[英]zsh script not emitting expected enable/disable output

我在 bash 腳本之后得到了這個,在 Mac 中的每個用戶登錄中,我將檢查安全令牌狀態是否設置為啟用。 然后我會用 grep -ic 命令來計算字使能出現了多少次。 然后,如果單詞 enable 不等於 0,我將打印用戶名和單詞 enabled,否則禁用。 這是我得到的 output:

luigiMac
martaMac
provamacmarco:Disabled

這是腳本:

#!/usr/bin/env zsh

result=""
enabled="Enabled"
disabled="Disabled"
users=$(dscl . -list /Users | grep -v -e '_' -e root -e nobody -e daemon)

for item_ in "${users[@]}"; do
    newUsers+=("$item_")
    #echo $newUsers
done

for i in "${newUsers[@]}";do
#echo $i[4]
tokenStatus+=$(sysadminctl -adminUser "" -adminPassword "" -secureTokenStatus "$i" 2>&1 | grep -ic "enabled")
print $tokenStatus
if [[ "${tokenStatus[@]}" -ne 0 ]]
then
result="${i}:${enabled}"
echo "${result}"
else
result="${i}:${disabled}"
echo "${result}"
fi
done

#echo "${result}"

我不明白為什么腳本不為其他用戶名打印啟用或禁用。

我不是zsh專家,但 IMO 你在腳本中做了很多不必要的事情; 您可以將其簡化為:

dscl . -list /Users |
grep -vE -e '^_' -e '^(root|daemon|nobody)$' |
while IFS=$'\n' read -r user
do
    if sysadminctl ... -secureTokenStatus "$user" 2>&1 |
       grep -q 'ENABLED'
    then
        result=Enabled
    else
        result=Disabled
    fi
    printf '%s:%s\n' "$user" "$result"
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM