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