前言:
生產(chǎn)環(huán)境中的應(yīng)用場景:根目錄下建立數(shù)量不等的目錄,掛載不同的硬盤,按sdb-sdn的順序?qū)?yīng)/data2-/datan,就需要for循環(huán)嵌套來解決,寫成如for i in 1 2 3 ,for j in a b c,1a,2b,3c這樣而for循環(huán)似乎并不支持for的一一對應(yīng),寫出來執(zhí)行的話,會變成第一個循環(huán)只對應(yīng)第二個循環(huán)的第一個變量的這種情況,花了點(diǎn)時間嘗試,最終用兩種不同的方式得以實現(xiàn),分別是使用第三個變量替代和使用數(shù)組為變量編號的方法,直接用實例來說明:
變量替代:
簡單的說就是先插入一條不相干的數(shù)據(jù),然后使用sed來進(jìn)行替換。
for i in $every;do
#$erery表示系統(tǒng)掛載的硬盤,挨個分區(qū),并將臟數(shù)據(jù)wwwdata1以配置文件格式寫入fstab
parted -s /dev/$i mklabel gpt >/dev/null || echo "${i}part01出現(xiàn)問題,請檢查"
parted -s /dev/$i mkpart Primary 1 `parted /dev/$i p|grep "^Disk"|cut -d ":" -f2` >/dev/null || echo "${i}part02出現(xiàn)問題,請檢查"
mkfs -T largefile -t ext4 -b 4096 -m 2 /dev/${i}1 >/dev/null || echo "${i}mkfs出現(xiàn)問題,請檢查"
echo "/dev/${i}1 /wwwdata1 ext4 defaults 0 0" >> /etc/fstab
echo "-${i}磁盤格式化分區(qū)完成-" sleep 2
done
for a in $foldername;do
#$foldername表示文件夾名稱,使用sed替換wwwdata1,每次使用變量替換一次wwwdata1,即可達(dá)成目的。
sed -i 0,/wwwdata1/s//${a}/ /etc/fstab echo "-${a}文件夾已掛載磁盤-" sleep 1 || echo "-${a}掛載失敗-" done
數(shù)組:
將需要對應(yīng)的元素分別放入兩個數(shù)組,然后使用for循環(huán)來按元素下標(biāo)進(jìn)行調(diào)用。舉個簡單點(diǎn)的例子,大家能看懂就好了:
#!/bin/bash
file=(1 2 3)
disk=(a b c)
for i in `seq 0 2`;do
echo "${file[i]}${disk[i]}"
done
實際上的應(yīng)用呢,這兩種方法都是可以的,但顯而易見,第二種方法更科學(xué),腳本的健壯性更好。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- shell中的for循環(huán)用法詳解
- linux shell循環(huán):for、while、until用法詳解
- linux shell常用循環(huán)與判斷語句(for,while,until,if)使用方法
- Shell腳本用for循環(huán)遍歷參數(shù)的方法技巧
- shell for循環(huán)、循環(huán)變量值付給其他shell腳本的方法
- 基于Shell中for循環(huán)的幾個常用寫法分享
- Shell中的for和while循環(huán)詳細(xì)總結(jié)
- Shell中的for循環(huán)總結(jié)
- Shell中的循環(huán)語句for、while、until實例講解