在shell脚本中使用for循环声明不同的变量



我正在尝试编写一个函数来输入不同人员的信息,例如五名学生。我打算使用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";值为"0";i〃;使用了几种方法。有一种方法可以像namen="${i}name"一样绑定两者,但我希望字符串后面有整数值,所以它对我不起作用。我是shell脚本的新手,所以你所有有价值的建议都会很有帮助。

设置:

$ 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

相关内容

  • 没有找到相关文章

最新更新