2016-03-12 46 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脚本做到这一点。