【发布时间】:2017-06-15 23:33:17
【问题描述】:
在你们上次出色地帮助了我之后,我(再次)需要一些帮助。 我正在编写一个脚本来使用 SmartCTL 测试我的硬盘驱动器。所以我当然可以复制每个磁盘的命令,但是如果我可以只设置一次磁盘并且脚本会一一执行,那就更棒了:
#!/bin/bash
date=`date +%d-%m-%Y-%T`
touch /var/log/disk/Disk-health-check-$date
disks="/dev/sda
/dev/sdb"
for disk in disks
do
wait=$(smartctl -t short $disk | awk '/Please wait/ {print $3}')
echo "waiting..."
sleep $((wait * 60 + 60))
echo "done"
smartctl --log=selftest $disk
smartctl -a $disk
done
exit
但不幸的是它只使用/dev/sda,而不是sdb等。 那么我怎样才能使它起作用呢?提前谢谢大家!!
【问题讨论】:
-
for disk in $disks,而不是for disk in disks。虽然即使这样也是不好的做法。 -
disks=( /dev/sda /dev/sdb ),并使用for disk in "${disks[@]}",作为数组。并修复shellcheck.net 发现的所有错误。 -
另外——使用
YYYY-mm-dd作为您的日期格式。它是一个 ISO 标准,而且 - 更重要的是 - 它的 ASCII 排序顺序与其作为日期的排序顺序一致,这对于您在此处尝试使用的格式绝对不正确。正确的 ASCII 排序顺序可以更容易地找到最旧或最新的文件,或者每个比特定日期更早的文件,等等。