Мне нужна помощь (снова) после того, как вы, ребята, помогли мне чудесно в прошлый раз. Я пишу скрипт для тестирования своих жестких дисков с помощью SmartCTL. Так что я могу конечно скопировать команды на диск, но это было бы еще более удивительным, если я могу просто установить диски один раз и сценарий делает их один за другим:Bash: использовать переменную в цикле
#!/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 и т. д. Итак, как я могу это сделать? Спасибо заранее, ребята!
'для диска в $ disks', а не' на диске в disks'. Хотя это и есть плохая практика. –
'disks = (/ dev/sda/dev/sdb)' и использовать 'для диска в '$ {disks [@]}" 'для массива. И исправить все ошибки http://shellcheck.net/ find. –
как другой - используйте 'YYYY-mm-dd' в качестве формата даты. Это стандарт ISO, и, что более важно, его порядок сортировки по ASCII имеет порядок сортировки как дату, что абсолютно не соответствует формату, который вы пытаетесь использовать здесь. Наличие правильного порядка сортировки ASCII облегчает поиск самого старого или новейшего файла или каждого файла старше определенной даты и т. Д. –