Случайные аргументы (содержащие цветовые коды) из массива

У меня есть массив (показано ниже) с аргументами, которые содержат цветовые коды.

Цель моего сценария – рандомизировать эти аргументы, когда пользователь вводит

scriptname randoms Text 

так что каждый раз он будет отображать Text на экране другого цвета.

Ниже я написал некоторые утверждения if, не связанные с этой конкретной проблемой, они работают, когда я их тестировал. Проблема, которую я имею, заключается в рандомизации цветов, когда пользователь вводит

 scriptname randoms Text 

Вот сценарий:

 #!\bin\bash declare -A colours=( [black]="0;30" [red]="0;31" [green]="0;32" [yellow]="0;33" [blue]="0;34" [magenta]="0;35" [cyan]="0;36" [white]="0;37" [BLACK]="1;30" [RED]="1;31" [GREEN]="1;32" [YELLOW]="1;33" [BLUE]="1;34" [MAGENTA]="1;35" [CYAN]="1;36" [WHITE]="1;37" [bLaCk]="0;30" [rEd]="0;31" [gReEn]="0;32" [yElLoW]="0;33" [bLuE]="0;34" [mAgEnTa]="0;35" [cYaN]="0;36" [wHiTe]="0;37" [BlAcK]="1;30" [ReD]="1;31" [GrEeN]="1;32" [YeLlOW]="1;33" [BlUe]="1;34" [MaGeNtA]="1;35" [CyAn]="1;36" [WhItE]="1;37") if [ $# -lt 2 ]; then echo Usage: echoc COLOUR STRING exit 1 fi regex='^black$|^red$|^green$|^yellow$|^blue$|^magenta$|^cyan$|^white$' randoms=$(( $RANDOM % $regex )); echo $randoms shopt -s nocasematch if [[ $1 =~ $randoms ]] ; then echo -ne '\e['${colours[$randoms]}m shift echo -e $*'\e[0m' exit 2 fi 

2 Solutions collect form web for “Случайные аргументы (содержащие цветовые коды) из массива”

Я не совсем понимаю, как вы хотите, чтобы ваш скрипт работал. Я немного переписал его: распечатайте все аргументы командной строки, каждая буква в случайном цвете:

 #!/bin/bash # [black]=30 # [red]=31 # [green]=32 # [yellow]=33 # [blue]=34 # [magenta]=35 # [cyan]=36 # [white]=37 function random_colour { local bold=$(( $RANDOM % 2 )) local code=$(( 30 + $RANDOM % 8 )) printf "%d;%d\n" $bold $code } sentence="$*" for (( i=0; i<${#sentence}; i++ )); do printf "\e[%sm%c" "$(random_colour)" "${sentence:i:1}" done echo -e '\e[0m' 

С zsh :

 zmodload zsh/terminfo text='some text' b=(%B '') print -rP -- ${text//(#m)?/%F{$((RANDOM%terminfo[colors]))}$b[RANDOM%2+1]${MATCH//\%/%%}}%b%f 
  • найти и удалить дубликаты в каталоге
  • Bash найти и заменить в файле C ++
  • Создавать древовидную структуру каталога клонирования и копировать файлы в соответствующие каталоги, измененные после определенной даты
  • лучше несколько заменить фигурные скобки
  • Как удалить столбец или несколько столбцов из файла с помощью команды оболочки?
  • Bash: как получить значение из массива для создания команды из него
  • Как извлечь строки из одного файла в несколько файлов
  • Ввод каталогов, где имена совпадают в подстроке
  • grep для извлечения подстроки из огромной строки
  • systemd Ошибка при выполнении сценария нереста EXEC: разрешение отклонено
  • Как печатать все подмножества набора?
  • Interesting Posts

    Отменить команду chmod в каталоге

    od эмуляция для каталогов

    Недавнее изменение приводит к тому, что Shift + Space ничего не делает

    Создайте устройство петли записи-записи для гораздо большего блочного устройства

    Есть ли способ назначить клавишу быстрого доступа для контекстного меню nautilus?

    Использование sed для удаления целой строки, если оно содержит только определенный номер

    Можно ли переименовать элементы панели по умолчанию в панели Thunar?

    Могу ли я просматривать задачи, которые будут выполняться с помощью загружаемой книги?

    Debian Wheezy live – gparted, dmsg, fdisk и т. Д. Не обнаруживают локальный жесткий диск, но он отображается во время установки

    Какие файлы `some_name.o.cmd`?

    iptables – почему я получаю «Таблица не существует (вам нужно insmod?)»

    Нет данных xauth; используя фальшивую аутентификацию. Не удается отобразить удаленные окна

    Очистка временного файла ~ / .cache / duplicity / temp failed

    Как измерить время поступления пакета?

    Есть ли способ изменить цветную тему w3m?

    Linux и Unix - лучшая ОС в мире.