Я пытаюсь написать сценарий, в котором я запускаю команду (связанную с шеф-поваром) и получаю список клиентов. Я перенаправил это в файл и теперь читаю из этого файла по строкам. Все это я мог бы успешно сделать, однако следующая часть оказалась довольно сложной. Я попытаюсь объяснить, чего я хочу достичь. Я хочу присвоить эти значения, полученные из строки, в другую переменную. Во-первых, посмотрите на код:Auto Incrementing Variable Names
#!/bin/bash
cd /home/usrname/chef-repo
knife client list > /home/usrname/nodes.txt
NOL=`cat /home/usrname/nodes.txt | wc -l`
for((i=1;i<=$NOL;i++))
do
VAR$i=`awk 'NR=='$i'{print $1}' /home/usrname/nodes.txt`
echo `$VAR$i`
done
O/P:
[email protected]:~/ShellScripts$ ./line.sh
./line.sh: line 9: VAR1=RhelVM: command not found
./line.sh: line 10: 1: command not found
./line.sh: line 9: VAR2=TrialNode: command not found
./line.sh: line 10: 2: command not found
./line.sh: line 9: VAR3=TrialNode2: command not found
./line.sh: line 10: 3: command not found
./line.sh: line 9: VAR4=WIN-OG02P1DGC30: command not found
./line.sh: line 10: 4: command not found
./line.sh: line 9: VAR5=vmnt-validator: command not found
./line.sh: line 10: 5: command not found
То, что я хотел, чтобы этот сценарий, чтобы сделать, это назначить эти имена узлов для увеличивающиеся имен переменных соответственно.
Например. VAR1 получит присваивается значение RhelVM и echo $VAR1
вернет RhelVM
,
VAR2 получит назначенную TrialNode и и echo $VAR2
будет возвращать TrailNode
и так далее.
Как вы, ребята, видите, мой подход идет ужасно неправильно. Есть какой-либо способ сделать это?