存储无法执行的命令的输出

时间:2014-06-26 13:26:20

标签: bash shell

我正在尝试将命令输出存储到脚本中的变量,并根据存储在变量中的输出打印结果。

例如,在此脚本中,我尝试打印从lab.txt文件中读取的少数系统上安装的代理的状态。如果状态与" isrunning"匹配,则打印出"已安装代理"。

~]#  cat lab.txt
192.168.1.1
192.168.1.2

这是脚本 -

#!/bin/bash
while read host; do
status=$(ssh -n root@$host /opt/agent/bin/agent.sh status | awk 'NR==1{print $3 $4}')

if [ $status != isrunning ]
then
echo "agent is not installed"
else
echo "agent is installed"
fi
done < lab.txt

这里的问题是,如果命令返回错误,因为系统192.168.1.2上没有/ opt / agent目录,则不会安装&#34;代理&#34;消息未打印。这可能有什么问题?

~]# ./script.sh

   root@192.168.1.1:

   agent is installed

   root@192.168.1.2:

   bash: /opt/agent/bin/agent.sh: No such file or directory
   ./script.sh: line 5: [: !=: unary operator expected
   agent is installed

1 个答案:

答案 0 :(得分:1)

$status未初始化,因此不满足条件[ status != isrunning ]。类似的东西:

if [ "$status" != isrunning ]

应该解决这个问题并摆脱unary operator expected的错误。