gpt4 book ai didi

bash - 为什么for循环中组合变量的回显不起作用?

转载 作者:行者123 更新时间:2023-12-01 05:09:45 28 4
gpt4 key购买 nike

循环中的“echo”行有什么问题?它应该在第一个输入后回显 v1 的值,在第二个输入后回显 v2,在第三个输入后回显 v3。相反,它只是回应 $i。为什么忽略 $v ?循环完成后,我对保护程序变量进行了“手动检查”,它们显然存在。

脚本:

#!/bin/bash
for i in {1..3}
do
read -p "Insert value $i: " v$i
echo "you wrote " $v$i #I have problem in this line
done

echo
echo "check of saved values:"
echo $v1
echo $v2
echo $v3

控制台输出:

./input_2.sh
Insert value 1: what
you wrote 1 #output should be: you wrote what
Insert value 2: the
you wrote 2 #output should be: you wrote the
Insert value 3: hell
you wrote 3 #output should be: you wrote hell

check of saved values:
what
the
hell

谢谢

最佳答案

这一行:

echo "你写了 "$v$i

尝试写入变量 $v 后跟 $i

你需要的是将变量名存储到一个变量中,然后使用${!},例如:

varname=v$i
echo "you wrote " ${!varname}

一个好的做法是将此变量名也用于 read 操作:

#!/bin/bash
for i in {1..3}
do
varname=v$i
read -p "Insert value $i: " $varname
echo "you wrote " ${!varname}
done

echo
echo "check of saved values:"
echo $v1
echo $v2
echo $v3

关于bash - 为什么for循环中组合变量的回显不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60300808/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com