捕获ifconfig eth0 inet6的输出添加并赋值给变量

时间:2016-02-03 16:24:31

标签: shell ifconfig

我有一个添加IPv6s的脚本。但我需要弄清楚如何将命令的输出分配给变量,然后在代码中进一步使用它。 这就是我所拥有的

 ret=$(/sbin/ifconfig eth0 inet6 add $IPV6PROXYADD)
 if [ "$ret" ];
 then
  returnflag="error"
  echo "$ret" >> "/root/mypath/ipv6/ipadderror.log"
 fi

但是脚本会将结果输出到屏幕而不是将其分配给变量。 我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

你可能想要更像这样的东西。

/sbin/ifconfig eth0 inet6 add $IPV6PROXYADD > /root/mypath/ipv6/ipadderror.log 2>&1
if [ $? -ne 0 ] ;
then
  returnflag="error"
fi

即使在成功的情况下,您的日志也将包含ifconfig命令的stdout和stderr。您可能也希望在错误情况下退出,可能具有非零退出状态,这是一种比某些字符串标志更标准的指示错误的方法。

答案 1 :(得分:1)

我决定添加另一个答案,而不是修改原始答案。这种方法保留了大部分原始代码(虽然这不是我的风格: - )

ret=$( /sbin/ifconfig eth0 inet6 add $IPV6PROXYADD 2>&1 )
if [ $? -ne 0 ];
then
  returnflag="error"
  echo "$ret" >> "/root/mypath/ipv6/ipadderror.log"
fi

我保留了返回代码检查 $?,而不是查看变量 ret 的内容。