我正在嘗試編寫一個腳本,用於發出命令(與廚師相關)並獲取客戶端列表。我已將文件重定向到一個文件中,現在我正在逐行讀取該文件。所有這些我都可以成功地做到,但是下一部分證明是非常複雜的。我會盡力解釋我想達到的目標。我想將這些從行中獲取的值分配給不同的變量。先來看看代碼:自動增量變量名稱
#!/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
等。
正如你們可以看到的,我的方法會出錯。有沒有辦法做到這一點?