如何分配变量';s值为;第「;bash中循环中其他变量的值?

如何分配变量';s值为;第「;bash中循环中其他变量的值?,bash,Bash,我试图用raspberry pi来提高我的bash脚本编写技能,所以我做了一些脚本 在这个脚本中,我想从用户那里获取一些信息: -继电器关闭次数 -关闭每个继电器的时间 为了熟悉它,尽量在for循环中使用它 我有一个问题,分配一个变量到另一个变量的一部分。 你们可以在我试图输入sleep命令的循环部分看到它。据我所知,内存中有4个变量:pausetime17、pausetime18、pausetime22、和pausetime23,所以我只想在循环中遍历它们: from z in 17 18 2

我试图用raspberry pi来提高我的bash脚本编写技能,所以我做了一些脚本

在这个脚本中,我想从用户那里获取一些信息: -继电器关闭次数 -关闭每个继电器的时间 为了熟悉它,尽量在for循环中使用它

我有一个问题,分配一个变量到另一个变量的一部分。 你们可以在我试图输入sleep命令的循环部分看到它。据我所知,内存中有4个变量:
pausetime17
pausetime18
pausetime22
、和
pausetime23
,所以我只想在循环中遍历它们:

from z in 17 18 22 23
do
    sleep $pausetim$z
done
但误差在壳牌公司上升。我做错了什么? 谢谢

echo“输入重复次数”
读数字时间
17 18 22 23中的k
做
echo“输入继电器的时间$k”
阅读pausetime$k
完成
17 18 22 23中的j
做
echo$j>/sys/class/gpio/export
回声输出>/sys/class/gpio/gpio$j/方向
完成
对于((i=1;i/sys/class/gpio/gpio$z/value)
睡眠$pausetime${!z}
echo 0>/sys/class/gpio/gpio$z/value
睡眠$pausetime${!z}
完成
完成
17 18 22 23中的j
做
echo$j>/sys/class/gpio/unexport
完成

正如评论中所说,这可能不是一个好方法,但是可以通过变量间接寻址来实现

 pausetime17=1
 z=17
 varname=pausetime$z

 echo ${!varname}
因为bash 4变量可以具有refname属性

$ declare -n varref=pausetime$z
$ echo $varref
1
然而,赋值对引用变量有影响

$ varref=10
$ echo $pausetime17
10
$ unset varref
$ echo $pausetime17
## nothing ##

也许你应该使用数组变量。是的,我想到了这个方法。我只是想知道我可以用简单的变量来处理零星的情况。请不要这样做:动态更改变量名或可执行代码会导致难以调试的情况。使用数组并不困难,也是这种情况下的最佳选择。@MichaelJaros我用以前的建议成功地完成了这项任务,而且效果很好。但是我用数组解决了这项任务,这肯定是更好的方法。谢谢你。非常感谢。它符合你的建议。我像你写的那样制作。对于17 18 22 23中的z,do echo 1>/sys/class/gpio/gpio$z/value tempvar=pausetime$z sleep${!tempvar}echo 0>/sys/class/gpio/gpio$z/value sleep${!tempvar}完成
$ varref=10
$ echo $pausetime17
10
$ unset varref
$ echo $pausetime17
## nothing ##