好吧我有一个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