好的,我有一个由 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
这依赖于全局匹配/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
数组中的dummy
条目hd
只是使它基于一个。
您可以对其进行重组以对其进行操作/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 上创建文件,它可以工作。