Скрипт — "цветопробник"

/ Просмотров: 1820

Занялся я как-то созданием собственной "библиотеки" цветовых переменных для облегчения подсветки вывода в терминале. Однако быстро убедился, что дело это отнюдь не интересное, а напротив, скучное и утомительное. Каждый раз переправлять и пересохранять скриптик с новыми значениями команды tput или писать длинный однообразный скрипт и потом копаться в его выводе-простыне — удовольствие маленькое. И от скуки и общего разочарования я сочинил этакий почти-интерактивный скриптик, который несколько облегчил это дело, да и сам развлек меня. Может, кому-нибудь пригодится.

Скрипт прост и не нуждается в объяснениях и комментариях, кроме тех, которые вы найдете в коде. Некоторое время я сам удивлялся, зачем мне понадобилась команда read, ведь можно было бы просто запускать скрипт с двумя параметрами-числами. Но и в этом нашлась своя сермяжная правда: пытаясь найти способ устранения ошибки вывода при случайном вводе трех или более чисел, я наконец уяснил себе ранее непрожеванное место в man bash smile

Если написать
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

Пользоваться скриптом очень просто: запускаем его, в ответ на запрос вводим одно или два числа, которые могут состоять из одной — трех цифр, и получаем подсвеченную с помощью введенных значений строку такого вида:

Вывод при двух переданных числах

Оставьте комментарий

Комментарий будет опубликован после проверки

(обязательно)