执行命令时出错

Error while executing the command

顺便说一句,当我的“8443”端口未被监听时,我正在尝试 运行 我的脚本。为此,我在命令提示符下写了如下命令,

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

这给了我如下错误。

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

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

您使用的语法很奇怪。

如果我理解代码,你正在做 ps aux,如果第二列没有代码 8443 的行,你想要 运行 脚本boot.sh.

您可以改为使用类似的东西:

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

-z 表示:"the length of STRING is zero"。因此,这通过检查是否有任何第二列以 8443 作为值来检查 ps auxawk 的输出。在这种情况下会有一些输出,因此 -z 将为 false,命令将不会被执行。但是如果没有输出,-z就会为真,boot.sh就会被执行。

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

if [ ! .... ] ];

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

尝试

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