Linux bash iterating и Break

У меня две группы серверов SERVERS_CA AND SERVERS_NY.

У меня будет массив, похожий на SERVERGROUP = (CA NY)

CA и NY будут иметь множество серверов в таких массивах, как

CA = (ca126 ca546 ca 642)

NY = (ny112 ny113 ny114)

Что мой сценарий должен сделать, так это проверить, будет ли HOSTNAME сервера, с которого мы запускаем скрипт, будет соответствовать той группе.

Предположим, что HOSTNAME сервера находится в массиве CA, тогда он должен сказать что-то вроде SERVERGROUP IS CALIFORNIA

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

Если кто-то может помочь мне написать этот скрипт, это будет полезно. благодаря

One Solution collect form web for “Linux bash iterating и Break”

Массивы массивов действительно очень болезненны в bash

host=ny113 for grp in "${SERVERGROUP[@]}"; do ref="${grp}[@]" for srv in "${!ref}"; do if [[ $host == $srv ]]; then echo $host is in $grp break 2 fi done done 
 ny113 is in NY 

Использование ассоциативных массивов (bash version 4) – это другой подход:

 declare -A grps grps[CA]="ca126 ca546 ca 642" grps[NY]="ny112 ny113 ny114" for grp in "${!grps[@]}"; do # all quotes and spaces are very deliberate in next command if [[ " ${grps[$grp]} " == *" $host "* ]]; then echo $host is in $grp break fi done 

Или вы могли бы построить «обратную карту»,

 declare -A host2group for grp in "${SERVERGROUP[@]}"; do ref="${grp}[@]" for srv in "${!ref}"; do host2group[$srv]=$grp done done echo $host is in ${host2group[$host]} 
 ny113 is in NY 
  • В чем причина того, что rmdir (1) и rm (1) сосуществуют?
  • Какая связь между Unix, Linux, Ubuntu, Debian и Android?
  • Linux / Unix в Windows
  • Выбор между .bashrc, .profile, .bash_profile и т. Д.
  • Как искать слово или фразу в команде «человек» Linux и цикл через найденные решения?
  • Сортировка не согласована с помощью команды Unix `sort '
  • Почему размер раздела подкачки должен быть вдвое меньше размера ОЗУ?
  • Фильтровать файл, когда столбец находится в белом списке
  • Custom Vim Highlighting (работает только с определенными типами файлов)
  • Как настроить SSH, поэтому мне не нужно вводить пароль?
  • Каковы пределы команды whois для unix?
  • Почему «не найти», как мне кажется, это нужно?
  • Давайте будем гением компьютера.