EDIT2:@glenn jackman我認爲這可以解決它,但它仍然在我的完整腳本錯誤。爲什麼它不工作?是否由於間接參考?Bash間接變量參考
#!/home/$current_user/Desktop/expect
...
COUNTER=0
while [ $COUNTER -lt $num ]; do
let index=COUNTER+1
tmp=user_$index
echo "Changing Password for " ${!tmp}
echo ${!tmp}
sudo passwd ${!tmp}
expect -exact "[sudo] password for $current_user: "
send "$pass\r"
interact
expect -exact "New password: "
send "$password\r"
interact
let COUNTER=COUNTER+1
done
編輯:的!或者/ $$用於調用其他變量中的變量。如果變量是字符串的一部分,我需要幫助。
我有一個關於Bash中間接變量引用的快速問題。
eval "\${user_$index\}" #First attempt
echo \$${eval "{user_\$index}"} #Second attempt
基本上我有一個名爲 「用戶_ NUM」 裏的NUM是一個整數幾個變量。每個變量都包含一個字符串值。我想通過調用該變量來調用該字符串值。但是,由於變量裏面有一個變量(num),我似乎無法得到它的工作。我已經通過Man頁面查看了Bash中的間接引用,但他們沒有提到其他變量內部的變量附加到字符串的情況。
TLDR:我的問題是你怎麼做:
$(var_$num)
可能重複[Lookup shell variables by name,indirect](http://stackoverflow.c om/questions/1694196/lookup-shell-variables-by-name-indirect) –
'$ current_user'從哪裏來? – rici