我有一个奇怪的错误,基本上我已经设置了一个函数来通过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命令的排列,使用逗号的引号和转义字符,但没有取得任何成功。我确信这很简单,我应该能够解决这个问题,但谷歌似乎只是让我得到关于用逗号分割字符串的结果。
答案 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}?