gpt4 book ai didi

linux - Bash 数组不接受通配符

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:03 31 4
gpt4 key购买 nike

我有一个在 bash 脚本中设置的数组。我的目标是通过具有许多网络接口(interface)的服务器上的特定端口进行 ping 操作。例如 ping -I eth3 172.26.0.1 命令强制通过 eth3 ping

当我设置 bash 数组时,如果我单独调用元素(端口),我就可以使代码正常工作。例如,我在这里告诉它 ping Element 2 或 eth5

ethernet[0]='eth3'
ethernet[1]='eth4'
ethernet[2]='eth5'
ethernet[3]='eth6'

ping -c 1 -I ${ethernet[2]} 172.26.0.1

脚本运行并通过 eth2 执行 ping 操作

[13:49:35] shock:/dumps # bash -x ARRAY
+ ethernet[0]=eth3
+ ethernet[1]=eth4
+ ethernet[2]=eth5
+ ethernet[3]=eth6
+ ping -c 1 -I eth5 172.26.0.1
PING 172.26.0.1 (172.26.0.1) from 172.26.0.192 eth5: 56(84) bytes of data.
From 172.26.0.192 icmp_seq=1 Destination Host Unreachable

--- 172.26.0.1 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 3001ms

但是,如果我使用通配符而不仅仅是元素 2,它会在第二个元素 (Eth4) 上消失

ethernet[0]='eth3'
ethernet[1]='eth4'
ethernet[2]='eth5'
ethernet[3]='eth6'


ping -c 1 -I ${ethernet[*]} 172.26.0.1

[13:48:12] shock:/dumps # bash -x ARRAY
+ ethernet[0]=eth3
+ ethernet[1]=eth4
+ ethernet[2]=eth5
+ ethernet[3]=eth6
+ ping -c 1 -I eth3 eth4 eth5 eth6 172.26.0.1
ping: unknown host eth4

对于为什么通配符在数组中的第二个元素上消失有什么想法吗?我是脚本编写新手,我实际上只是尝试使用我从本文中学到的知识并将其应用到有用的网络脚本中。谢谢

http://www.thegeekstuff.com/2010/06/bash-array-tutorial/

编辑 - 我不知道为什么我在这个问题上被否决了。请指教

最佳答案

-I 选项仅采用一个接口(interface);您需要循环数组:

for ifc in "${ethernet[@]}"; do
ping -c 1 -I "$ifc" 172.26.0.1
done

关于linux - Bash 数组不接受通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213544/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com