[爆卦]shell script變數中的變數是什麼?優點缺點精華區懶人包

為什麼這篇shell script變數中的變數鄉民發文收入到精華區:因為在shell script變數中的變數這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者gn00678465 (Balmung)看板Linux標題[問題] 迴圈內變數中的變數問題?時間...


首先,小弟我的問題標題實在不知道要怎麼下,傷眼抱歉
如果有十多台電腦想丟同一個檔案上去,電腦的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
goldie: 這個sh有支援陣列嗎?可以用陣列配 for loop 比較不會寫得 05/18 19:24
goldie: &看得這麼痛苦XD 05/18 19:24
gn00678465: 我不是相關科系畢業的,我都是上網邊看邊學的,不太 05/18 19:40
gn00678465: 董怎麼查詢有無支援? 05/18 19:41
Neisseria: 打 sh --version 看看,應該有支援 array 吧 05/18 19:42
gn00678465: 我會查詢看看,如果支援,我會研究array看看,感謝提 05/18 19:44
gn00678465: 提供新方法 05/18 19:45
kenduest: 你的 ip 連續出現有什麼特殊規則嗎 ? 05/18 19:48
gn00678465: 分2部分 但是幾乎都是+2 05/18 19:50
gn00678465: 分兩部份是指一部份數字100以內,另一100以上 05/18 19:51
kenduest: 可以舉個例子嗎,有看真的沒懂... 05/18 19:56
gn00678465: part 1:ip1=10.99.188.29;ip2=10.99.188.31 05/18 19:59
gn00678465: part 2:ip3=10.99.188.131;ip4=10.99.188.133如上 05/18 20:00
gn00678465: 好像可以分2部分來寫,i+1變成i+2 如此之類的 05/18 20:01
kenduest: 簡單說你要產生一堆動態變數嗎 ip1,ip2,ip3.. ? 05/18 20:52
kenduest: num=10 05/18 20:59
kenduest: 像是這樣?http://i.imgur.com/s3jenbK.png 05/18 21:01
kenduest: 繼續改一下就是: http://i.imgur.com/bL7WXaU.png 05/18 21:10
kenduest: 執行結果畫面: http://i.imgur.com/bMchO8q.png 05/18 21:13
lantw44: ${!varname} 好像是 bash 專用的功能,一般 sh 可用 eval 05/18 23:22
lantw44: 只不過不好寫也很難看 eval 'echo "$'"$varname"'"' 05/18 23:26
gn00678465: 我再試試看這些方法,感謝幫忙 05/19 07:44
gn00678465: 想請問lantw44兄,eval後變數只在這一行生效嗎? 05/19 08:37
gn00678465: 試過在下一行寫指令,但是變數就不對了 05/19 08:38
gn00678465: 測試出來了,用=$()包起來,感謝幫忙 05/19 08:45
chang505: 把 ip放在另一個檔案就很方便了 05/19 17:03

你可能也想看看

搜尋相關網站