Ваш контроллер SATA возвращает сообщения об ошибках для команд чтения и записи.
Ошибка timeout, которая говорит о том, что контроллер не может связаться с вашими жесткими дисками, точнее не получает от них ответа.
Наиболее вероятной причиной проблемы является проблема с контактом кабелей SATA. Проверьте с другим жестким диском, другим кабелем, вставьте кабель в разные разъемы и т. д.
Вы можете провести тест на $i
, как в:
[[ "$i" -lt 1 ]] && printf "I am only printed once\n"
# OR
(( i < 1 )) && printf "I am only printed once\n"
# OR
! (( i )) && printf "I am only printed once\n"
# OR
[ "$i" -lt 1 ] && printf "I am only printed once\n"
# OR
if [[ "$i" -lt 1 ]]; then
printf "I am only printed once\n"
fi
Предполагая, что вы не используете ассоциативный массив bash .
Короче говоря:Если индекс меньше 1, то вывести.
Для удобочитаемости я бы тоже разбил эти строки. Путь к ширине. Обратите внимание, что вы также можете сказать:
printf '%s %s some long text' \
"$var1" "$var2"
Использование заглавных букв для переменных также является плохой привычкой.
Информация также обычно должна быть напечатана на stderr
, поэтому >&2
.
Также использовал бы:
prinf '%s@%s' "${user[i]}" "$ip" >&2
вместо:
prinf "${user[i]}@$ip" >&2
Вывести заголовок, если в массиве user
есть элементы.
if [[ ${#user[@]} -gt 0 ]]; then
printf '%sCredentials Found!%s\n\n' "$NCB" "$NC"
fi
Затем сделайте свою петлю.
for i in "${!user[@]}"; do
printf 'The Username & Password is %s : %s\n\n' "${user[i]}" "${pass[i]}" >> SSH-Credentials.txt
cat <<END_MESSAGE
Log into the SSH server using ${YELLOW}ssh ${user[i]}@$ip$NC
When prompted, enter the password found: ${YELLOW}${pass[i]}$NC
END_MESSAGE
done