====== 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