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

eoigrqb6  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(167)

我正在尝试写一个函数来输入不同人的信息,例如,五个学生。我打算用for循环来做,而不声明数组。

function student() {
    for (( i = 0; i < 5; i++ )); do
        echo "Name"
        read name$i
    done
   }

我相信在每次迭代中,读取输入的变量name$i都是不同的。

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脚本的新手,所以你所有有价值的建议都会很有帮助。

9vw9lbht

9vw9lbht1#

设定:

$ name0=0; name1=1; name2=2; name3=x; name4=y

bash dynamic variables上运行web搜索应该会提供很多选项,其中包括:
间接引用

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

相关问题