0

我有一个奇怪的错误,基本上我已经设置了一个函数来通过 SSH 在一个盒子上运行远程命令并获取局域网 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 命令的许多排列,使用引号和转义字符作为逗号,但没有任何成功。我确信这真的很简单,我应该能够弄清楚,但谷歌似乎只是让我得到关于用逗号分割字符串的结果。

4

3 回答 3

1

您的示例在测试期间似乎运行良好。我可以提供两个建议:

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

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
~->

祝你好运。

于 2013-07-22T15:18:47.763 回答
1

正如 das.cyklone 和我在上面提到的,您可能想查看远程命令是否返回影响 echo 命令输出的空格。也许使用tr从 $boxlanmac 变量中删除任何空格可以解决问题。请参阅如何从 Bash 变量中修剪空格?方法来做到这一点。

于 2013-07-22T15:31:19.237 回答
0

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

于 2013-07-22T15:19:49.540 回答