bash循环如何解决



好吧,我有一个8 HDD的塔,我正在尝试制作一个脚本,该脚本将循环通过它们,并为每个HDD的结果(来自HDPARM的信息)制作一个文本文件有自己的文件夹。我现在如何循环此脚本以进行SDC->/bay2,SDD->/bay3,SDE->/bay4 ect ect

这现在正在为一个HDD工作,只需为另一个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),并且像 @Sampson-Chen的答案一样,用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上创建文件。

相关内容

  • 没有找到相关文章

最新更新