Разберем на отдельные компоненты
"${count// /}"
представляет собой синтаксис расширения параметра для замены всех пробелов в содержимом переменной пустой строкой. например. 2 1
становится просто21
=~ ^[0-9]+$
выполняет операцию регулярного выражения bash
сопоставления строки в левой части с набором цифр только . ! [[..]]
отменяет всю операцию, что означает, что условие становится истинным, только если содержимое count
является , а не строкой цифр. if
вы echo
выводите числовое значение 1
, а при ошибке if
возвращает фактическое значение count
без удаления пробелов, выполненного в 1 ). Оскорбления — это просто сообщения, которые sudo
выводятся точно так же, как и все остальные сообщения.
Вы можете изменить эту часть исходного кода:
#ifdef INSULT
if (def_insults)
warning = INSULT;
#endif
на что-то вроде:
#ifdef INSULT
if (def_insults)
say(INSULT);
#endif
Конечно, вы должны определить say()
и решить, как взаимодействовать с выбранной вами системой преобразования текста в речь (некоторые из них перечислены здесь).
Есть и другие решения, связанные со вспомогательными технологиями. Например, запустив sudo
наyasr
и заставив его читать только оскорбления и игнорировать все остальное (, вам придется сделать их узнаваемыми, хотя ).