我正在用这个简单的代码敲击键盘。
#!/bin/bash
connstate="Connected"
vpnstatus=$(/opt/cisco/anyconnect/bin/vpn state | (grep -m 1 'state:'))
echo $vpnstatus
vpnconn=$(echo $vpnstatus | sed -e 's/>>\ state: //g' | sed "s/ //g")
echo "$vpnconn" "$connstate"
if [ "$vpnconn" = "$connstate" ];then
echo $vpnconn
else echo "this script still fails"
fi
echo done
这是上述代码的输出:
>> state: Connected
Connected Connected
this script still fails
done
我认为问题围绕着vpnconn=$
,如果我对该部分代码进行评论并填充变量vpnconn="Connected"
此代码可以正常工作。有关sed如何处理来自vpnstatus的输入并将结果输出到vpnconn的内容正在使得在if中进行比较时看起来正确的结果不正确。
我尝试将vpnconn行分成两行并且没有改变任何内容,我取出sed "s/ //g"
并用修饰-d ' '
替换它并且没有改变结果。我知道这是我遗漏的一小段代码中的一小部分。
答案 0 :(得分:0)
你试过吗?
vpnconn=$(echo "$vpnstatus" | awk '{print $3}')
类似的东西:
vpnstatus=$(/opt/cisco/anyconnect/bin/vpn state|grep -m 1 'state:'|awk '{print 3}')
应该做的工作。