2016-03-12 48 views
0

所以我試圖比較用戶列表中的bash,啓用文件庫的用戶與我定義的用戶。作爲一個測試,我跑:在bash中,我的for循環返回的結果太多

for i in "$ulist"; do 
    if ($i == *testuser*) || ($i == *otheruser*) 
    then 
    echo "dont' change $i" 
    else 
    echo "change $i" 
    fi 
done 

但它只返回

testuser 
otheruser 
x 
y 
change z 

備案:

ulist=$(fdesetup list | cut -d',' -f1) 

任何想法,爲什麼它只是在整個列表循環,而不會真的比較它的我想要的方式?最後,我希望能夠跳過修改我告訴它跳過的用戶。

+2

您發佈的代碼包含語法錯誤,無法返回您報告的輸出。首先,請參閱http://shellcheck.net/並修復它指出的錯誤。 – tripleee

+0

引用'for'參數只產生一次迭代。 – tripleee

+0

是的,我對bash很陌生,但是我發現很難將一個數組與另一個數組進行比較並生成我想要的數組。我最終找到了一種方法來獲得我想要的結果,而不必檢查兩個數組。我仍然有很多其他小問題,但到目前爲止,這個障礙已經越過了。 – evobe

回答

0

是的,我對bash很陌生,但是我發現很難將一個數組與另一個數組進行比較並生成我想要的數組。我最終找到了一種方法來獲得我想要的結果,而不必檢查兩個數組。我仍然有很多其他小問題,但到目前爲止,這個障礙已經越過了。 我最終使用grep來查找用戶和awk來打印我想要的第一列。這是我的第一個Stack帖子,感謝所有幫助。

1

我猜你真正想要的是像

fdesetup list | 
grep -vE '^(test|other)user,' 

如果你真的想詳細做/不輸出,改變grep一個簡單sed腳本做到這一點。