[问题] 循环内变量中的变量问题?

楼主: gn00678465 (Balmung)   2015-05-18 19:10:15
首先,小弟我的问题标题实在不知道要怎么下,伤眼抱歉
如果有十多台电脑想丢同一个档案上去,电脑的IP不是连续的
小弟我想写一个脚本先设定变量为各台电脑的IP,变量为连续的
然后用循环去带出个别电脑的IP位址,实在是不知道要如何写这个变量,
爬文#1Ighf6r6 里面的变量写法也都失败,显示Bad substitution,
特此来请教各位前辈,感谢。
系统:HP-UX 没有bash,只能使用sh,故采用while写法。
程式码如下:
#!/bin/sh
#set
i=0
ip1=11.11.111.111
ip2=22.22.222.222
ip3=33.33.333.333
ip4=44.44.444.444
ip5=55.55.555.555
#loop
while [ $i -le 4 ]; do
i=$(($i + 1))
echo "$i"
varname=ip$i
echo ${!varname}
done
作者: goldie (阿良)   2015-05-18 19:24:00
这个sh有支援阵列吗?可以用阵列配 for loop 比较不会写得&看得这么痛苦XD
楼主: gn00678465 (Balmung)   2015-05-18 19:40:00
我不是相关科系毕业的,我都是上网边看边学的,不太董怎么查询有无支援?
作者: Neisseria (Neisseria)   2015-05-18 19:42:00
打 sh --version 看看,应该有支援 array 吧
楼主: gn00678465 (Balmung)   2015-05-18 19:44:00
我会查询看看,如果支援,我会研究array看看,感谢提提供新方法
作者: kenduest (小州)   2015-05-18 19:48:00
你的 ip 连续出现有什么特殊规则吗 ?
楼主: gn00678465 (Balmung)   2015-05-18 19:50:00
分2部分 但是几乎都是+2分两部份是指一部份数字100以内,另一100以上
作者: kenduest (小州)   2015-05-18 19:56:00
可以举个例子吗,有看真的没懂...
楼主: gn00678465 (Balmung)   2015-05-18 19:59:00
part 1:ip1=10.99.188.29;ip2=10.99.188.31part 2:ip3=10.99.188.131;ip4=10.99.188.133如上好像可以分2部分来写,i+1变成i+2 如此之类的
作者: kenduest (小州)   2015-05-18 20:52:00
简单说你要产生一堆动态变量吗 ip1,ip2,ip3.. ?num=10像是这样?http://i.imgur.com/s3jenbK.png继续改一下就是: http://i.imgur.com/bL7WXaU.png执行结果画面: http://i.imgur.com/bMchO8q.png
作者: lantw44 (#######################)   2015-05-18 23:22:00
${!varname} 好像是 bash 专用的功能,一般 sh 可用 eval只不过不好写也很难看 eval 'echo "$'"$varname"'"'
楼主: gn00678465 (Balmung)   2015-05-19 07:44:00
我再试试看这些方法,感谢帮忙想请问lantw44兄,eval后变量只在这一行生效吗?试过在下一行写指令,但是变量就不对了测试出来了,用=$()包起来,感谢帮忙
作者: chang505 (眼线)   2015-05-19 17:03:00
把 ip放在另一个档案就很方便了

Links booklink

Contact Us: admin [ a t ] ucptt.com