Скрипт — "цветопробник"
Занялся я как-то созданием собственной "библиотеки" цветовых переменных для облегчения подсветки вывода в терминале. Однако быстро убедился, что дело это отнюдь не интересное, а напротив, скучное и утомительное. Каждый раз переправлять и пересохранять скриптик с новыми значениями команды tput или писать длинный однообразный скрипт и потом копаться в его выводе-простыне — удовольствие маленькое. И от скуки и общего разочарования я сочинил этакий почти-интерактивный скриптик, который несколько облегчил это дело, да и сам развлек меня. Может, кому-нибудь пригодится.
Скрипт прост и не нуждается в объяснениях и комментариях, кроме тех, которые вы найдете в коде. Некоторое время я сам удивлялся, зачем мне понадобилась команда read, ведь можно было бы просто запускать скрипт с двумя параметрами-числами. Но и в этом нашлась своя сермяжная правда: пытаясь найти способ устранения ошибки вывода при случайном вводе трех или более чисел, я наконец уяснил себе ранее непрожеванное место в man bash
read a bа затем ввести не два, а три или более слова, то третье (и все следующие) будут восприняты как часть второго. Избежать этого очень просто, что и показано в скрипте.
#!/bin/bash # color_probe.sh # ©brego Dec 2016 # Скрипт для быстрой пробы цвета командами tput setaf и tput setab smul=$(tput smul) bold=$(tput bold) err=$(tput setaf 1;tput bold) end=$(tput sgr0) echo $bold"Введите одно или два числа$end (первое — цвет текста, второе — цвет фона):" read num1 num2 num3 # Здесь num3 гарантирует правильный вывод # +при случайном вводе 3-х и более чисел (см. man bash) a1="tput setaf $num1" a2="tput setab $num2" a11=$($a1) a12=$($a2) if [[ -z $num1 ]] && [[ -z $num2 ]];then echo $err"Не введено ни одного числа!!"$end exit 699 elif [[ $num1 ]] && [[ $num2 ]];then echo "=============================================" echo $a11$a12" Теперь у нас текст $a1; фон $a2 "$end else echo "=============================================" echo $a11"Теперь у нас цвет текста такой: $a1"$end fi echo "=============================================" # Если не нуждаетесь в подсказке, раскомментируйте следующую строку, а все за ней удалите #exit 0 echo $smul"Применение:$end Объявляем переменные color1=\$(tput setaf [число]) или color1=\$(tput setaf [число];tput setab [число]) и end=\$(tput sgr0) Подсвечиваем вывод: echo \$color1\"Какой-то текст\"\$end" exit 0
Пользоваться скриптом очень просто: запускаем его, в ответ на запрос вводим одно или два числа, которые могут состоять из одной — трех цифр, и получаем подсвеченную с помощью введенных значений строку такого вида:
