3

好的,我有一个由 8 个 HDD 组成的塔,我正在尝试制作一个脚本,该脚本将遍历它们,并为每个 HDD 在自己的文件夹中创建一个包含结果(来自 hdparm 的信息)的文本文件。我现在如何循环这个脚本去 sdc -> /Bay2, sdd -> /Bay3, sde -> /Bay4 等

这现在适用于一个 HDD 只需要为其他 7 个循环它

if [ -c /dev/sdb ];
then
sudo hdparm -I /dev/sdb >> /Bay1/sdb.txt
fi
4

2 回答 2

4

这依赖于全局匹配/dev/sdXseq生成 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

数组中的dummy条目hd只是使它基于一个。

您可以对其进行重组以对其进行操作/dev/sd[b-z](让它匹配任何数字,而不是期望 8)并按照@sampson-chen 的回答计算for sd in /dev/sd[b-z] ...

于 2012-10-23T20:21:57.863 回答
2
    # 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 上创建文件,它可以工作。

于 2012-10-23T19:54:24.870 回答