在bash中,我的for循环返回太多结果

时间:2016-03-12 18:15:56

标签: bash

所以我尝试比较bash中的用户列表,启用文件库的用户与我定义的用户。作为测试,我跑了:

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 个答案:

答案 0 :(得分:1)

我猜你真正想要的是像

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

如果你真的想要详细的输入/输出输出,请将grep改为简单的sed脚本。

答案 1 :(得分:0)

是的,我对bash很新,但我发现将数组与另一个数组进行比较并生成我想要的内容非常困难。我最终只想找到一种方法来获得我想要的结果而无需检查两个数组。我还有很多其他的小问题,但到目前为止,这个障碍已经克服了。 我最终使用grep找到用户并使用awk打印我想要的第一列。这是我的第一篇Stack帖子,感谢大家的帮助。