Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash:if检查变量行数的指令失败_Bash_Unix - Fatal编程技术网

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