如何在bash中将变量值分配给循环中其他变量的“part”?

时间:2017-09-08 06:39:46

标签: bash

我正在尝试使用raspberry pi增强我的bash脚本编写技能,所以做一些脚本。

在这个脚本中,我想从用户那里获取一些信息: - 继电器关闭次数 - 关闭每个继电器的时间 并尝试在for循环中做到最大,只是为了熟悉它。

我有一个问题是将变量分配给其他变量的一部分。 您可以在我尝试输入睡眠命令的循环部分中看到它。正如我所强调的,我在内存中有4个变量:pausetime17pausetime18pausetime22pausetime23,所以我只想循环遍历它们:

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

1 个答案:

答案 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 ##