我正在嘗試撰寫一個函式來輸入有關不同人的資訊,例如五個學生。我打算使用 for 回圈而不宣告陣列來執行此操作。
function student() {
for (( i = 0; i < 5; i )); do
echo "Name"
read name$i
done
}
我相信在每次迭代中,name$i讀取輸入的變數都是不同的。現在,當我嘗試使用 for 回圈顯示相同的資料時
function student() {
for (( i=0;i < 5; i )); do
echo $(name$i)
done
}
它顯示一個錯誤name0: command not found
現在,當我明確顯示值時echo "$name0" echo "$name1",一切正常,這告訴我所有變數都已宣告并且輸入已填充。問題是我在嘗試顯示值時可能沒有正確訪問變數名,因為當我寫echo "$name$i"的時候,輸出是name0. 這意味著它將“name”作為字串和 i 的值。我嘗試使用幾種方法將字串“name”與“i”的值連接起來。有一種方法可以系結兩者,namen="${i}name"但我想要字串后面的整數值,所以它對我不起作用。我是 shell 腳本的新手,所以你所有有價值的建議都會有所幫助。
uj5u.com熱心網友回復:
設定:
$ name0=0; name1=1; name2=2; name3=x; name4=y
運行網路搜索bash dynamic variables應該提供很多選項,其中包括:
間接參考
student() {
for ((i=0; i<5; i ))
do
x="name${i}"
echo "${!x}"
done
}
名稱參考
student() {
for ((i=0; i<5; i ))
do
declare -n x="name${i}"
echo "${x}"
done
}
這兩個生成:
$ student
0
1
2
x
y
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515332.html
上一篇:使用shell腳本提取kubernetespod名稱
下一篇:回圈線,卷曲獲取值,存盤值
