[問題] 迴圈內變數中的變數問題?

看板Linux作者 (Balmung)時間10年前 (2015/05/18 19:10), 編輯推噓3(3023)
留言26則, 6人參與, 最新討論串1/3 (看更多)
首先,小弟我的問題標題實在不知道要怎麼下,傷眼抱歉 如果有十多台電腦想丟同一個檔案上去,電腦的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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.41.31.111 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1431947417.A.87E.html

05/18 19:24, , 1F
這個sh有支援陣列嗎?可以用陣列配 for loop 比較不會寫得
05/18 19:24, 1F

05/18 19:24, , 2F
&看得這麼痛苦XD
05/18 19:24, 2F

05/18 19:40, , 3F
我不是相關科系畢業的,我都是上網邊看邊學的,不太
05/18 19:40, 3F

05/18 19:41, , 4F
董怎麼查詢有無支援?
05/18 19:41, 4F

05/18 19:42, , 5F
打 sh --version 看看,應該有支援 array 吧
05/18 19:42, 5F

05/18 19:44, , 6F
我會查詢看看,如果支援,我會研究array看看,感謝提
05/18 19:44, 6F

05/18 19:45, , 7F
提供新方法
05/18 19:45, 7F

05/18 19:48, , 8F
你的 ip 連續出現有什麼特殊規則嗎 ?
05/18 19:48, 8F

05/18 19:50, , 9F
分2部分 但是幾乎都是+2
05/18 19:50, 9F

05/18 19:51, , 10F
分兩部份是指一部份數字100以內,另一100以上
05/18 19:51, 10F

05/18 19:56, , 11F
可以舉個例子嗎,有看真的沒懂...
05/18 19:56, 11F

05/18 19:59, , 12F
part 1:ip1=10.99.188.29;ip2=10.99.188.31
05/18 19:59, 12F

05/18 20:00, , 13F
part 2:ip3=10.99.188.131;ip4=10.99.188.133如上
05/18 20:00, 13F

05/18 20:01, , 14F
好像可以分2部分來寫,i+1變成i+2 如此之類的
05/18 20:01, 14F

05/18 20:52, , 15F
簡單說你要產生一堆動態變數嗎 ip1,ip2,ip3.. ?
05/18 20:52, 15F

05/18 20:59, , 16F
num=10
05/18 20:59, 16F

05/18 21:01, , 17F
05/18 21:01, 17F

05/18 21:10, , 18F
繼續改一下就是: http://i.imgur.com/bL7WXaU.png
05/18 21:10, 18F

05/18 21:13, , 19F
執行結果畫面: http://i.imgur.com/bMchO8q.png
05/18 21:13, 19F

05/18 23:22, , 20F
${!varname} 好像是 bash 專用的功能,一般 sh 可用 eval
05/18 23:22, 20F

05/18 23:26, , 21F
只不過不好寫也很難看 eval 'echo "$'"$varname"'"'
05/18 23:26, 21F

05/19 07:44, , 22F
我再試試看這些方法,感謝幫忙
05/19 07:44, 22F

05/19 08:37, , 23F
想請問lantw44兄,eval後變數只在這一行生效嗎?
05/19 08:37, 23F

05/19 08:38, , 24F
試過在下一行寫指令,但是變數就不對了
05/19 08:38, 24F

05/19 08:45, , 25F
測試出來了,用=$()包起來,感謝幫忙
05/19 08:45, 25F

05/19 17:03, , 26F
把 ip放在另一個檔案就很方便了
05/19 17:03, 26F
文章代碼(AID): #1LMSYPX- (Linux)
文章代碼(AID): #1LMSYPX- (Linux)