Это часть моего сценария bash:
# Checking disk
for disk in $disks
do
# Creating a array with results
declare -a status=(`smartctl -a -d ata $disk | awk '/Reallocated_Sector_Ct/ || /Seek_Error_Rate/ { print $2" "$NF }'`)
# Checking that we do not have any Reallocated Sectors
if [ "${status[1]}" -ne 0 ]
then
echo "$mname Warning: Disk $disk has errors! ${status[0]} ${status[1]} ${status[2]} ${status[3]}. Following complete smartctl output." >> diskerror.log
smartctl -a -d ata $disk >> $logloc/diskerror.log
failed=("${failed[@]}" "$disk")
sendm="1"
fi
done
Когда я запускаю скрипт, bash возвращает следующую ошибку: disk_status.sh: строка 38: [: : ожидается целочисленное выражение
Строка ошибки: if [ "${status[1]}" -ne 0 ]
Кто-то может помочь с этой ошибкой?
Seek_Error_Rate
иReallocated_Sector_Ct
— не единственные параметры SMART, которые следует проверять при оценке состояния жесткого диска. - person Daniel Kamil Kozar   schedule 06.10.2014$status
(или хотя бы${status[1]}
). Используйтеset -x
для включения режима отладки, и вы сможете узнать, что вызвало вашу проблему. - person Tom Fenech   schedule 06.10.2014${#status[@]}
равно 0 или 1, поэтому${status[1]}
просто не существует. - person chepner   schedule 06.10.2014