我正在尝试一个简单的程序来比较存储在日志文件中的字符串值,并收到如下错误,
#!/bin/bash
check_val1="successful"
check_val2="completed"
log="/compile.log"
if [[ grep $check_val1 $log -ne $check_val1 || grep $check_val2 $log -ne $check_val2 ]];
then
echo "No Error"
else
echo "Error"
fi
Error:
./simple.sh: line 7: conditional binary operator expected
./simple.sh: line 7: syntax error near `$check_val1'
./simple.sh: line 7: `if [[ grep $check_val1 $log -ne $check_val1 || grep $check_val2 $log -ne $check_val2 ]];'
Run Code Online (Sandbox Code Playgroud)
anu*_*ava 18
问题在于你的if [[...]]表达式,你使用2个grep命令而不使用命令替换,即$(grep 'pattern' file).
但是代替:
if [[ grep $check_val1 $log -ne $check_val1 || grep $check_val2 $log -ne $check_val2 ]]; then
Run Code Online (Sandbox Code Playgroud)
你可以使用grep -q:
if grep -q -e "$check_val1" -e "$check_val2" "$log"; then
Run Code Online (Sandbox Code Playgroud)
按照man grep:
-q, --quiet, --silent
Quiet mode: suppress normal output. grep will only search a file until a match
has been found, making searches potentially less expensive.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41604 次 |
| 最近记录: |