LINUX.ORG.RU

Подстановка в имя переменной значение другой переменной + суффикс

 , ,


0

1

Пытаюсь реализовать следующую схему:

HOSTS=$(cat << EOF
host1 #допустим это имя локалхоста
host2
host3
EOF
)

LOCALHOST=$(hostname | cut -d . -f 1)

for host in $HOSTS
do


     if [[ $host = $LOCALHOST ]]
        then
             host_local=$(command)
        else
            host_remote=$(command)
      fi
done

Вопрос в том, как объявить переменную host_local(remote) таким образом, чтобы первая её часть - host, содержала значение переменной $host, чтобы можно было потом к ней обратиться. Т.е. на выходе нужно получить переменные

$host1_local
$host2_remote
$host3_remote

содержащие результаты выполнения команд на этих хостах



Последнее исправление: kreiz (всего исправлений: 2)

Ответ на: комментарий от xaizek

eval «$host»'_local=$(echo hi)'

Немного быстрее и безопаснее будет:

declare ${host}_local=$(echo hi)

kreiz: Другое дело, что сама постановка задачи только кажется, что облегчит дальнейшую глобальную задачу, но лучше вообще так не делать, а и дальше использовать изначальный массив имен, возможно сделав ещё один массив, где будут флаги — локальный или удаленный хост.

vodz ★★★★★
()