bash:if检查变量行数的指令失败
我有以下指示:bash:if检查变量行数的指令失败,bash,unix,Bash,Unix,我有以下指示: if [[ ! `wc -l <<< $SILENT_LOG` -eq 1 -o ! `wc -l <<< $ACTIVE_LOG` -eq 1 ]] then echo "There should be only a silent report log file!" >> $DEST_DIR/$RESULT_FILE OK=0; fi 如果[[!`wc-l您的代码中有一些语法问题 对于[…],您可
if [[ ! `wc -l <<< $SILENT_LOG` -eq 1 -o ! `wc -l <<< $ACTIVE_LOG` -eq 1 ]] then
echo "There should be only a silent report log file!" >> $DEST_DIR/$RESULT_FILE
OK=0;
fi
如果[[!`wc-l您的代码中有一些语法问题
对于[…]
,您可以使用:
if [[ $(wc -l < "$SILENT_LOG") -eq 1 || $(wc -l < "$ACTIVE_LOG") -eq 1 ]]; then
echo "There should be only a silent report log file!" >> $DEST_DIR/$RESULT_FILE
OK=0
fi
如果[[$(wc-l<“$SILENT_LOG”)-eq 1 | |$(wc-l<“$ACTIVE_LOG”)-eq 1];则
echo“应该只有一个静默报告日志文件!”>>$DEST\u DIR/$RESULT\u文件
OK=0
fi
您的代码中存在一些语法问题
对于[…]
,您可以使用:
if [[ $(wc -l < "$SILENT_LOG") -eq 1 || $(wc -l < "$ACTIVE_LOG") -eq 1 ]]; then
echo "There should be only a silent report log file!" >> $DEST_DIR/$RESULT_FILE
OK=0
fi
如果[[$(wc-l<“$SILENT_LOG”)-eq 1 | |$(wc-l<“$ACTIVE_LOG”)-eq 1];则
echo“应该只有一个静默报告日志文件!”>>$DEST\u DIR/$RESULT\u文件
OK=0
fi
首先,以下语法不起作用:
$ [[ 1 -eq 1 -o 2 -eq 2 ]]
bash: syntax error in conditional expression
bash: syntax error near `-o'
在bash中,您有两种选择:
$ [[ 1 -eq 1 || 2 -eq 2 ]]
$ [ 1 -eq 1 -o 2 -eq 2 ]
为了与普通POSIX shell兼容,上述两种方法都不应使用,前者是因为普通POSIX不支持[
,后者是因为普通POSIX shell无法可靠地解析如此长的测试。请使用:
$ [ 1 -eq 1 ] || [ 2 -eq 2 ]
对于第二个问题,让我们创建一个包含三行的变量:
$ silent_log='one
> two
> three'
现在请注意:
$ wc -l <<<$silent_log
1
$ wc -l <<<"$silent_log"
3
$wc-l首先,以下语法不起作用:
$ [[ 1 -eq 1 -o 2 -eq 2 ]]
bash: syntax error in conditional expression
bash: syntax error near `-o'
在bash中,您有两种选择:
$ [[ 1 -eq 1 || 2 -eq 2 ]]
$ [ 1 -eq 1 -o 2 -eq 2 ]
为了与普通POSIX shell兼容,上述两种方法都不应使用,前者是因为普通POSIX不支持[
,后者是因为普通POSIX shell无法可靠地解析如此长的测试。请使用:
$ [ 1 -eq 1 ] || [ 2 -eq 2 ]
对于第二个问题,让我们创建一个包含三行的变量:
$ silent_log='one
> two
> three'
现在请注意:
$ wc -l <<<$silent_log
1
$ wc -l <<<"$silent_log"
3
$wc-l