Увеличить номер переменной и присвоить новое значение - PullRequest
0 голосов
/ 27 июня 2018

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

list="010 110 004"
num=0
for node in `echo $list`
do
    ((num+=1))
    node_$num="my_host-$node.test.edu.com"
    echo $node_$num
done

Но я получаю такие ошибки:

bash: node_1=my_host-010.test.edu.com: command not found
1
bash: node_2=my_host-110.test.edu.com: command not found
2
bash: node_3=my_host-004.test.edu.com: command not found
3

Как я могу присвоить значения из списка возрастающему набору переменных?

1 Ответ

0 голосов
/ 27 июня 2018

Вот как это должно быть в bash:

list=(010 110 004)
num=0

for node in "${list[@]}"; do
    ((num+=1))
    var="node_$num"

    # use declare to create and instanitate var=value
    declare "$var"="my_host-$node.test.edu.com"

    # examine value o f$var
    declare -p "$var"
    # or use this echo to print just value
    # echo "${!var}"
done

declare -- node_1="my_host-010.test.edu.com"
declare -- node_2="my_host-110.test.edu.com"
declare -- node_3="my_host-004.test.edu.com"

Также обратите внимание на использование массивов оболочки для безопасной итерации конечного списка элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...