用! shell命令上的operator

时间:2014-11-19 15:08:52

标签: shell operators

我正在尝试编写一个脚本,如果文件中没有特定字符串,它会执行某些操作。

我知道为了检查字符串是否可用,我们可以执行以下操作:

if grep -qi "sms" $FILE; then

但是如何将!运算符与shell命令结合使用?

2 个答案:

答案 0 :(得分:1)

只需将其添加到您的条件前面即可进行评估:

if ! grep -qi "sms" $FILE; then echo "yes"; fi
   ^

测试

$ cat a
hello
bye
$ if ! grep -qi "sms" a; then echo "sms not found"; fi
sms not found

答案 1 :(得分:0)

!使"成功"成为"失败"从壳的角度来看,反之亦然。在shell中,您还可以使用大括号&&使用||(逻辑和操作),{ ... }(逻辑或操作)和组表达式。例如:

{ grep root /etc/passwd && ! grep user /etc/passwd; } && echo ok || echo not ok

请务必将;放在}之前。有关详细信息,请参阅man sh

请注意,上面是一个带有if-else-like逻辑的普通shell表达式。如果您想使用test命令或[[[,那么您还可以使用其他类型的分组,布尔算术和其他功能。请参阅man test