这是我的脚本,我想在文件中查找模式。我知道grep -q '<Pattern>' '<file>' && echo $?
如果找到模式,退出状态为 0。但我得到了if:表达式语法错误。
if ( (grep -q '<Pattern>' '<file>' && echo $?)==0 ) then
echo "Pattern found"
else
echo "Pattern not found"
endif
答案1
我强烈建议不要csh
在新脚本中使用(或其变体),原因请见此处为什么我不应该用 csh 编程?
然而正确的语法似乎是:
if ( { grep -q 'Pattern' file } ) then
echo "Pattern found"
else
echo "Pattern not found"
endif
即内部括号需要用大括号括起来。{ ... }
您不需要 echo 来$?
测试退出状态。
或者,您可以使用$status
变量:
grep -q 'Pattern' file
if ( $status == 0 ) then
echo "Pattern found"
else
echo "Pattern not found"
endif
在 中tcsh
,变量$status
可以被替换为$?
- 但并非所有csh
实现都支持这一点。
答案2
我认为你没有用“fi”关闭条件。
尝试以下它应该有效。
如果((grep -q''''&&echo $?)==0)则 echo“找到模式”否则 echo“未找到模式”fi