将MAC地址读取到shell变量会导致奇怪的行为

时间:2015-04-20 15:19:58

标签: bash shell ubuntu for-loop

我正在运行此脚本

#!/bin/bash

if [ $# != 2 ]
then
   echo argument one must be the site number
   echo argument two must be the vlan
fi

site=$1
vlan=$2
deviceNum=1

while read MACLine
do
   echo arp -s 10.${site}.${vlan}.${deviceNum} "${MACLine}" temp
   deviceNum=`expr $deviceNum + 1`
done < MAC.txt

我正在使用它作为输入

AC:CC:8E:0A:EF:67
AC:CC:8E:0B:AE:4B
AC:CC:8E:0B:CF:17
00:40:8C:FC:6D:86
00:40:8C:FA:61:B1
AC:CC:8E:0F:B1:C3
AC:CC:8E:0B:E5:2B
AC:CC:8E:0F:B1:D7
AC:CC:8E:0F:B1:DF

我得到了这个奇怪的输入......当我将粘贴复制到窗口(继续阅读)时

arp -s 10.10.20.1 AC:CC:8E:0A:EF:67
 temp
arp -s 10.10.20.2 AC:CC:8E:0B:AE:4B
 temp
arp -s 10.10.20.3 AC:CC:8E:0B:CF:17
 temp
arp -s 10.10.20.4 00:40:8C:FC:6D:86
 temp
arp -s 10.10.20.5 00:40:8C:FA:61:B1
 temp
arp -s 10.10.20.6 AC:CC:8E:0F:B1:C3
 temp
arp -s 10.10.20.7 AC:CC:8E:0B:E5:2B
 temp
arp -s 10.10.20.8 AC:CC:8E:0F:B1:D7
 temp
arp -s 10.10.20.9 AC:CC:8E:0F:B1:DF
 temp

但是,在Ubuntu shell中,我看到以下内容

temps 10.10.20.1 AC:CC:8E:0A:EF:67
temps 10.10.20.2 AC:CC:8E:0B:AE:4B
temps 10.10.20.3 AC:CC:8E:0B:CF:17
temps 10.10.20.4 00:40:8C:FC:6D:86
temps 10.10.20.5 00:40:8C:FA:61:B1
temps 10.10.20.6 AC:CC:8E:0F:B1:C3
temps 10.10.20.7 AC:CC:8E:0B:E5:2B
temps 10.10.20.8 AC:CC:8E:0F:B1:D7
temps 10.10.20.9 AC:CC:8E:0F:B1:DF

这种疯狂的方法是什么?


注意:这与冒号有关。如果用“hello ... hello ... hello”之类的东西替换MAC地址,它会按预期工作

2 个答案:

答案 0 :(得分:2)

您的输入文件中似乎有回车符。在输入文件上执行dos2unix,这应该可以解决您的问题。

答案 1 :(得分:1)

疯狂被称为Windows。 我拿了你的MAC地址列表并粘贴到Ubuntu上的一个文件中并运行脚本。

输出:

arp -s 10.10.20.1 AC:CC:8E:0A:EF:67 temp
arp -s 10.10.20.2 AC:CC:8E:0B:AE:4B temp
arp -s 10.10.20.3 AC:CC:8E:0B:CF:17 temp
arp -s 10.10.20.4 00:40:8C:FC:6D:86 temp
arp -s 10.10.20.5 00:40:8C:FA:61:B1 temp
arp -s 10.10.20.6 AC:CC:8E:0F:B1:C3 temp
arp -s 10.10.20.7 AC:CC:8E:0B:E5:2B temp
arp -s 10.10.20.8 AC:CC:8E:0F:B1:D7 temp
arp -s 10.10.20.9 AC:CC:8E:0F:B1:DF temp

然后转换为Windows疯狂并再次运行:

$ unix2dos MAC.txt
$ bash run_mac.sh 10 20
 temps 10.10.20.1 AC:CC:8E:0A:EF:67
 temps 10.10.20.2 AC:CC:8E:0B:AE:4B
 temps 10.10.20.3 AC:CC:8E:0B:CF:17
 temps 10.10.20.4 00:40:8C:FC:6D:86
 temps 10.10.20.5 00:40:8C:FA:61:B1
 temps 10.10.20.6 AC:CC:8E:0F:B1:C3
 temps 10.10.20.7 AC:CC:8E:0B:E5:2B
 temps 10.10.20.8 AC:CC:8E:0F:B1:D7
 temps 10.10.20.9 AC:CC:8E:0F:B1:DF

...瞧