好吧我有一個8 HDD的塔,我試圖做一個腳本,將通過他們循環,併爲每個硬盤在自己的文件夾中的結果(從hdparm信息)的文本文件。我現在怎麼循環這個腳本去sdc->/Bay2,sdd - >/Bay3,sde - >/Bay4等ectBASH Loop如何去做呢?
這是現在工作的一個硬盤只需要循環它爲其他7
if [ -c /dev/sdb ];
then
sudo hdparm -I /dev/sdb >> /Bay1/sdb.txt
fi
好吧我有一個8 HDD的塔,我試圖做一個腳本,將通過他們循環,併爲每個硬盤在自己的文件夾中的結果(從hdparm信息)的文本文件。我現在怎麼循環這個腳本去sdc->/Bay2,sdd - >/Bay3,sde - >/Bay4等ectBASH Loop如何去做呢?
這是現在工作的一個硬盤只需要循環它爲其他7
if [ -c /dev/sdb ];
then
sudo hdparm -I /dev/sdb >> /Bay1/sdb.txt
fi
這依賴於水珠匹配/dev/sdX
和命令seq
以生成1..8:
hd=(dummy /dev/sd[b-z])
for i in `seq 1 8`
do
sudo hdparm -I ${hd[$i]} >> /Bay$i/`basename ${hd[$i]}`.txt
done
的hd
數組中的條目dummy
只使得一個爲主。
你可以重組它在/dev/sd[b-z]
操作(讓它匹配任何號碼,沒想到8),並在@桑普森臣的回答與for sd in /dev/sd[b-z] ...
# start with lower case b, so ascii starts at 98 instead of 65
ascii=66
index=1
total=8
while [[ $total -ge $index ]]
do
letter=$(echo "$ascii" | awk '{ printf("%c",$0); }')
if [ -c /dev/sd$letter ];
then
sudo hdparm -I /dev/sd$letter >> /Bay$index/sd$letter.txt
fi
index=$((index+1))
ascii=$((ascii+1))
done
編輯:固定的總/指數錯位和偏移(98)爲小寫字母
與touch
只是測試它來創建Linux上的文件和它的作品。
缺少''上$ total'等 –
@BenJackson $'計數接得好!艱難的習慣來解決。 –
if語句不應該在'while'循環中,並且基於'/ dev/sd $ letter'而不是'/ dev/sdb'? – ruakh