这是我的代码
if [[ (grep -x $idle | grep -x $dead | grep -x $busy) || grep -x $idle1 | grep -x $dead | grep -x $busy1 ]] ./Event.log
then
echo "Events are running Successfully" >> ./Event.log
else
echo "One or more Events are down. Check the log and restart the Events." >> ./Event.log
fi
Run Code Online (Sandbox Code Playgroud)
我收到了错误
0403-057 Syntax error at line 14 : `-x' is not expected.
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
在bash中,[[语法上是一个以匹配结束的命令]].它不是if命令语法的一部分,其语法开始:
Run Code Online (Sandbox Code Playgroud) if commands ; then
如果要测试命令是否 成功,则只需执行以下操作:
if grep -q pattern file; then
# grep found pattern in file
else
# grep did not find pattern in file
fi
Run Code Online (Sandbox Code Playgroud)
在[[命令中,bash期望找到条件表达式,而不是另一个命令.这就是grep -x ...语法错误的原因.-x是条件表达式中的一元运算符,如果其参数是可执行文件的名称,则为true,但在该表达式中,它被用作二进制运算符.
如果您希望测试多个模式grep,可以使用该-e选项指定每个选项; grep将成功(或选择)与任何选项匹配的行:
if grep -q -e pattern1 -e pattern2 file; then
# grep found pattern1 or pattern2 in file
else
# grep did not find either pattern in file
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1111 次 |
| 最近记录: |