捕获 ifconfig eth0 inet6 添加的输出并分配给变量

Capture output of ifconfig eth0 inet6 add and assign to variable

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

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

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

您可能想要更多这样的东西。

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

即使在成功的情况下,您的日志也会包含 ifconfig 命令的标准输出和标准错误。您可能也想在错误情况下退出,也许退出状态为非零,这是一种比某些字符串标志更标准的错误指示方式。

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

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

我保留了 return 代码检查 $? 而不是查看变量 ret.[=11 的内容=]