我有一个添加IPv6s
的脚本。但我需要弄清楚如何将命令的输出分配给变量,然后在代码中进一步使用它。
这就是我所拥有的
ret=$(/sbin/ifconfig eth0 inet6 add $IPV6PROXYADD)
if [ "$ret" ];
then
returnflag="error"
echo "$ret" >> "/root/mypath/ipv6/ipadderror.log"
fi
但是脚本会将结果输出到屏幕而不是将其分配给变量。 我在这里做错了什么?
答案 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 的内容。