执行命令时出错
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 aux
和 awk
的输出。在这种情况下会有一些输出,因此 -z
将为 false,命令将不会被执行。但是如果没有输出,-z
就会为真,boot.sh
就会被执行。
你的方法失败了,因为你正在做:
if [ ! .... ] ];
既没有正确执行命令也没有检查其输出是正确的:你有一个 ]
太多了。
尝试
TMPVAR=`ps aux | grep '[8]443' | awk '{print }'` if [ "$TMPVAR" != "" ] ; then sh boot.sh ; fi
顺便说一句,当我的“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 aux
和 awk
的输出。在这种情况下会有一些输出,因此 -z
将为 false,命令将不会被执行。但是如果没有输出,-z
就会为真,boot.sh
就会被执行。
你的方法失败了,因为你正在做:
if [ ! .... ] ];
既没有正确执行命令也没有检查其输出是正确的:你有一个 ]
太多了。
尝试
TMPVAR=`ps aux | grep '[8]443' | awk '{print }'` if [ "$TMPVAR" != "" ] ; then sh boot.sh ; fi