====== Bash====== Про условные операторы https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html Про ввод подтверждения https://coderoad.ru/1885525/%D0%9A%D0%B0%D0%BA-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B8%D1%82%D1%8C-%D1%83-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%BF%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B5-bash Отладка: bash -xv script.sh 2>2 Выход при первой же ошибке: set -e или bash -е script.sh Цветной вывод (https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux): RED='\033[0;31m' NC='\033[0m' # No Color echo -e "I ${RED}love${NC} Stack Overflow" Проверка на соответствие регулярному выражению. В данном случае дата из 8 цифр if ! [[ "$VERSION_DATE" =~ ^[0-9]{8}$ ]] then echo "ERROR: The name of the rootfs archive contains an incorrect date" exit 1 fi Получение имени файла по символической ссылке [ -L $ROOTFS_ARCHIVE ] && ROOTFS_ARCHIVE=`realpath $ROOTFS_ARCHIVE` Бесконечный цикл со счетчиком до ошибки при вызове a.out for ((i=1;;i++)); do echo -n "$i: "; ./a.out||break;done