我正在尝试使用raspberry pi增强我的bash脚本编写技能,所以做一些脚本。
在这个脚本中,我想从用户那里获取一些信息: - 继电器关闭次数 - 关闭每个继电器的时间 并尝试在for循环中做到最大,只是为了熟悉它。
我有一个问题是将变量分配给其他变量的一部分。
您可以在我尝试输入睡眠命令的循环部分中看到它。正如我所强调的,我在内存中有4个变量:pausetime17
,pausetime18
,pausetime22
和pausetime23
,所以我只想循环遍历它们:
from z in 17 18 22 23
do
sleep $pausetim$z
done
但是错误在shell中上升。我究竟做错了什么? 感谢。
echo "Enter the number of repeats"
read numbertime
for k in 17 18 22 23
do
echo "Enter time for relay $k"
read pausetime$k
done
for j in 17 18 22 23
do
echo $j > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio$j/direction
done
for (( i=1; i<=$numbertime; i++ ))
do
for z in 17 18 22 23
do
echo 1 > /sys/class/gpio/gpio$z/value
sleep $pausetime${!z}
echo 0 > /sys/class/gpio/gpio$z/value
sleep $pausetime${!z}
done
done
for j in 17 18 22 23
do
echo $j > /sys/class/gpio/unexport
done
答案 0 :(得分:0)
正如评论中所述,这可能不是一个好方法,但这可以通过变量间接
来完成 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 ##