迴圈內變數中的變數問題? - Linux

Table of Contents


有段時間沒有寫 script 了,不過我的話會把所有 ip 放到一個檔案裡面,

例如 ip_addr.txt,然後用一個變數去抓那隻檔案的內容,大概會像這樣:

---

#/bin/bash

# 把 ip_addr.txt 內所有 ip 存到 ip_addr 這個變數裡面。
ip_addr = `cat ip_addr.txt`

# 下面這個 for 迴圈會一行一行的讀 ip_addr 裡面的值。
for ip in $ip_addr
do
# 再來看你要做什麼,但注意這邊的變數要用 $ip!
do something ...
done

---

※ ip_addr.txt 一行放一個 IP,不然 for 迴圈那邊會出錯,例如:

111.111.111.111
222.222.222.222
333.333.333.333

※ ip_addr.txt 要放在和 script 同一層資料夾,否則要 cat 絕對路徑,例如:

ip_addr = `cat /home/ptt/linux/ip_addr.txt`

之後要增減 ip 只要改 ip_addr.txt 這支檔案就可以了。


更詳細的教學可參考鳥哥的 Linux 私房菜:

http://linux.vbird.org/linux_basic/0340bashshell-scripts.php#for


希望這有幫到你。



--

All Comments

Edith avatarEdith2015-05-19
又學到了一招,這個迴圈應該可以改寫成while的吧
Ivy avatarIvy2015-05-21
這招還不錯, 筆記一下
Xanthe avatarXanthe2015-05-25
我也會這樣做,方便很多