执行命令时出错

时间:2015-03-13 12:47:34

标签: command-line

顺便说一句,我正在尝试运行我的脚本,当我的#8; 8443'端口不听。为此,我在命令提示符下写了一个如下命令,

if [ ! ps aux | grep '[8]443' | awk '{print $2}'] ]; then sh boot.sh; fi

这给了我如下的错误。

awk: {print $2}]
awk:           ^ syntax error
bash: [: missing `]'

如何用正确的语法编写这个?

2 个答案:

答案 0 :(得分:1)

这是您正在使用的奇怪语法。

如果我理解了代码,那么您正在执行ps aux,并且如果第二列上没有代码8443的行,则您希望运行脚本boot.sh

您可以使用以下内容:

if [ -z "$(ps aux | awk '$2==8443')" ]; then
    sh boot.sh
fi

-z表示:" STRING的长度为零"。因此,通过检查是否有任何第二列ps aux作为值来检查awk8443的输出。在这种情况下会有一些输出,因此-z将为false并且命令不会被执行。但如果没有输出,-z将为真,并且boot.sh将被执行。

你的方法失败了,因为你在做:

if [ ! .... ] ];

既不正确执行命令也不检查其输出是否正确:你有一个]太多了。

答案 1 :(得分:0)

尝试

TMPVAR=`ps aux | grep '[8]443' | awk '{print $2}'` if [ "$TMPVAR" != "" ] ; then sh boot.sh ; fi