Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将MAC地址读取到shell变量会导致奇怪的行为_Bash_Shell_Ubuntu_For Loop - Fatal编程技术网

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

Bash 将MAC地址读取到shell变量会导致奇怪的行为,bash,shell,ubuntu,for-loop,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 d

我正在运行这个脚本

#!/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
我得到这个奇怪的输入。。。当我复制粘贴到窗口时(继续阅读)

然而,在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
有什么方法可以消除这种疯狂



注意:这与冒号有关。如果将MAC地址替换为类似“hello…hello…hello”的内容,它将按预期工作

输入文件中似乎有回车字符。对输入文件执行
dos2unix
,这将解决您的问题。

输入文件中似乎有回车字符。对输入文件执行
dos2unix
,这将解决您的问题。

输入文件中似乎有回车字符。对输入文件执行
dos2unix
,这将解决您的问题。

输入文件中似乎有回车字符。对输入文件执行
dos2unix
,这将解决您的问题。

这种疯狂行为称为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

瞧…

这种疯狂被称为窗户。 我把你的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

瞧…

这种疯狂被称为窗户。 我把你的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

瞧…

这种疯狂被称为窗户。 我把你的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


瞧…

把你的脚本粘贴到那里,你可以看到你有一些[不是决定性的,但很重要]warnings@fedorqui我做了它建议的更正,但是,正如你自己所说的那样,它们并没有解决问题problem@Mr.Llama你是对的,这是输入文件,将脚本粘贴到其中,您可以看到您得到了一些[不是决定性的,但很重要]warnings@fedorqui我做了它建议的更正,但是,正如你自己所说的那样,它们并没有解决问题problem@Mr.Llama你是对的,这是输入文件,将脚本粘贴到其中,您可以看到您得到了一些[不是决定性的,但很重要]warnings@fedorqui我做了它建议的更正,但是,正如你自己所说的那样,它们并没有解决问题problem@Mr.Llama你是对的,这是输入文件,将脚本粘贴到其中,您可以看到您得到了一些[不是决定性的,但很重要]warnings@fedorqui我做了它建议的更正,但是,正如你自己所说的那样,它们并没有解决问题problem@Mr.Llama你是对的,输入文件是dos格式的,不是那样的。我可以确认它是一个UNIX文件,即使调用了
dos2unix
,它仍然不起作用。伙计,我觉得很愚蠢…输入文件是dos。回车不可靠。他们会将光标重置到行首,并开始覆盖文本。这就是为什么您的输出行以
temp
开头,因为它被
arp-s
覆盖为
[space]temp
。我可以确认它是一个UNIX文件,即使调用了
dos2unix
,它仍然不起作用。伙计,我觉得很愚蠢…输入文件是dos。回车不可靠。他们会将光标重置到行首,并开始覆盖文本。这就是为什么您的输出行以
temp
开头,因为它被
arp-s
覆盖为
[space]temp
。我可以确认它是一个UNIX文件,即使调用了
dos2unix
,它仍然不起作用。伙计,我觉得很愚蠢…输入文件是dos。回车不可靠。他们会将光标重置到行首,并开始覆盖文本。这就是为什么您的输出行以
temp
开头,因为它被
arp-s
覆盖为
[space]temp
。我可以确认它是一个UNIX文件,即使调用了
dos2unix
,它仍然不起作用。伙计,我觉得很愚蠢…输入文件是dos。回车不可靠。他们会将光标重置到行首,并开始覆盖文本。这就是为什么输出行以
temps
开头,因为它被
arp-s
覆盖为
[space]temp
。我认为
unix2dos
命令是专门为这种情况创建的。我认为
unix2dos
命令是专门为这种情况创建的。我认为
unix2dos
命令是专门为这种情况创建的。我认为
unix2dos
命令是专门为这种情况创建的。