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

Edith avatar
By Edith
at 2015-05-18T22:50

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


希望這有幫到你。



--
Tags: Linux

All Comments

Edith avatar
By Edith
at 2015-05-19T13:13
又學到了一招,這個迴圈應該可以改寫成while的吧
Ivy avatar
By Ivy
at 2015-05-21T12:26
這招還不錯, 筆記一下
Xanthe avatar
By Xanthe
at 2015-05-25T03:04
我也會這樣做,方便很多

Ubuntu SCTP CMT mode

Frederica avatar
By Frederica
at 2015-05-18T09:12
想利用 SCTP socket做一些事情, 但是 Ubuntu 似乎沒有support CMT (Concurrent Multipath Transfer) mode 不曉得有沒有人,有這方面的經驗,感謝!! - ...

nfs檔案砍不掉

Callum avatar
By Callum
at 2015-05-17T19:59
大家好 我的資料夾出現很多.nfsXXXXXXXXXXX的東西 導致再跑一些程式會出現問題 請問這是什麼東西 有辦法可以砍掉嗎? 用rm好像沒辦法 會顯示and#34;Device or resource busyand#34; 謝謝!! -- - ...

無線網卡附的driver跟系統抓的不一樣

Emily avatar
By Emily
at 2015-05-17T17:43
困擾很久了,完全無技可施才只好上來問 我買了一張totolink n150usm 無線網卡 他附的driver是rtl8192系列 可是lsusb看到的是mt7601 我在lubuntu自己編譯mt7601的driver後可以跑了 但是在pi上還是不行 (pi上有rtl8192的但是就是不會去抓) 請問該 ...

如何在script中確定mount有成功

Iris avatar
By Iris
at 2015-05-17T17:09
我有一個備份的指令,要在特定的分割區執行,所以第一步要確定mount。 雖然每次上線的的順序可能變掉,我可以用UUID解決這問題,然後我想到 用grep看mount有沒有備份資料夾的文字來確定mount有沒有成功: test -n `mount|grep --color and#34;on /backup ...

要如何改lsusb連結的硬體資訊?

David avatar
By David
at 2015-05-16T02:52
最近買了一塊totolink N150USM的無線網卡 結果Windows8.1抓的到也可以跑,但是lubuntu 15.04和RPi不行 找了老半天,結果看到lsusb的資訊: Bus 001 Device 005: ID 148f:7601 Ralink Technology, Corp. 可我的網卡 ...