在shell脚本中使用变量名

时间:2013-12-23 11:18:10

标签: shell raspberry-pi

首先,我很遗憾可能会出现不好的头衔,但我甚至不知道该怎么称呼它。

我正在尝试以下方法:

#!/bin/sh
VAR1="28-00000202070c"
VAR2="28-0000018776d3"
VAR3="28-0000033a6174"

for sensor in VAR1 VAR2 VAR3
do
 echo "$sensor:  $$sensor"
done

预期输出为:

VAR1:28-00000202070c

VAR2:28-0000018776d3

VAR3:28-0000033a6174

实际输出是:

VAR1:24038传感器

VAR2:24038传感器

VAR3:24038sensor

并且奇怪的前缀号码不断增长...

VAR1:24039传感器

VAR2:24039传感器

VAR3:24039传感器

...

我想问:

1)描述我在这里尝试做什么的正确术语/关键词是什么

2)如何达到预期的输出

谢谢, Joaoabs

1 个答案:

答案 0 :(得分:3)

这是sh不支持的内容,而bash则支持。

您应该使用的正确语法是:

echo "$sensor ${!sensor}"

测试

$ cat a
#!/bin/bash                 <----- note I changed /bin/sh to /bin/bash

VAR1="28-00000202070c"
VAR2="28-0000018776d3"
VAR3="28-0000033a6174"

for sensor in VAR1 VAR2 VAR3
do
 echo "$sensor ${!sensor}"
done

$ ./a
VAR1 28-00000202070c
VAR2 28-0000018776d3
VAR3 28-0000033a6174