Bug回显用逗号分隔的多个数值

时间:2013-07-22 15:02:10

标签: linux bash echo

我有一个奇怪的错误,基本上我已经设置了一个函数来通过SSH在一个盒子上运行远程命令,并获得lan MAC地址和其他一些信息。我想将此信息写入csv文件。

当我运行BOXLANMAC=$(remote_command "ifconfig eth0 | grep HWaddr | cut -d' ' -f11")时,我可以回显$ BOXLANMAC并获得预期的输出。

但是,当我运行echo $BOXLANMAC,$BOXLANMAC时,我会看到,XX:XX:XX:XX:XX:XX XX:XX:XX:XX:XX:XX,XX:XX:XX:XX:XX:XX。我已经尝试了许多echo命令的排列,使用逗号的引号和转义字符,但没有取得任何成功。我确信这很简单,我应该能够解决这个问题,但谷歌似乎只是让我得到关于用逗号分割字符串的结果。

3 个答案:

答案 0 :(得分:1)

您的示例似乎在测试期间正常工作。我可以提出两点建议:

1)使用awk而不是切换空格。它更可靠,更容易测试。

2)如果echo无效,请尝试printf。它为您提供了更多的语句控制。

~-> BOXLANMAC=$(ifconfig eth0 | grep HWaddr | awk '{ print $5 }')
~-> echo ${BOXLANMAC}
78:2B:CB:88:E5:AR
~-> echo ${BOXLANMAC},${BOXLANMAC}
78:2B:CB:88:E5:AR,78:2B:CB:88:E5:AR
~-> printf "%s,%s\n" ${BOXLANMAC} ${BOXLANMAC}
78:2B:CB:88:E5:AR,78:2B:CB:88:E5:AR
~->
祝你好运。

答案 1 :(得分:1)

正如上面提到的das.cyklone,你可能想看看远程命令是否返回影响echo命令输出的空格。也许使用tr从$ boxlanmac变量中删除任何空格都可以解决问题。有关执行此操作的方法,请参阅How to trim whitespace from a Bash variable?

答案 2 :(得分:0)

您是否尝试过:echo $ {BOXLANMAC},$ {BOXLANMAC}?