3

わかりました。8台のHDDのタワーがあり、それらをループして、各HDDの結果(hdparmからの情報)を含むテキストファイルを独自のフォルダーに作成しようとしています。どうすればこのスクリプトをループしてsdc->/Bay2、sdd-> / Bay3、sde-> / Bay4ectectに移動できますか

これは現在、1台のHDDで機能しており、他の7台でループする必要があります。

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

2 に答える 2

4

これは、globマッチングと1..8を生成する/dev/sdXコマンドに依存しています。seq

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それを1ベースにします。

あなたはそれを操作するように再構築し/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)を修正

touchLinuxでファイルを作成するためにこれをテストしたところ、動作します。

于 2012-10-23T19:54:24.870 に答える