从sed输出创建变量

时间:2016-11-16 15:48:42

标签: bash variables sed

我正在用这个简单的代码敲击键盘。

#!/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 ' '替换它并且没有改变结果。我知道这是我遗漏的一小段代码中的一小部分。

1 个答案:

答案 0 :(得分:0)

你试过吗?

vpnconn=$(echo "$vpnstatus" | awk '{print $3}')

类似的东西:

vpnstatus=$(/opt/cisco/anyconnect/bin/vpn state|grep -m 1 'state:'|awk '{print 3}')

应该做的工作。