#!/bin/bash
ssh root@192.xx.xx.xx netstat | grep 6200 > log
cnt=`grep -c 'EST' log`
if [ $cnt -eq 6 ]; then
echo working
fi
的结果
[root@xxx]# grep -c 'EST' log
6
[root@xxx]#
答案 0 :(得分:0)
我已经测试了你的脚本,如果你加倍qoote cnt它就有效,它的工作原理如下:
#!/bin/bash
ssh root@X.X.X.X netstat | grep 6200 > log
cnt=$(sudo grep -c 'EST' log)
if [ "$cnt" -eq 6 ];
then
echo working
fi
我建议您在此link
中检查您的shell脚本答案 1 :(得分:0)
cnt 变量为空时发生此错误。 if表达式的计算结果为 [-eq 6]
您可以在命令行上测试:
user@host:~$ [ -eq 6 ]
-bash: [: -eq: unary operator expected
此外,通过将 set -x 添加到脚本的顶部,您可以调试它的解释方式。
#!/bin/bash
set -x
if [ $cnt -eq 6 ]; then
echo working
fi
./test.sh
+ '[' -eq 6 ']'
./test.sh: line 5: [: -eq: unary operator expected
用双引号“$ cnt”包装$ cnt按照建议修复它,因为当空“$ cnt”计算为空字符串“”时。