Openwrt shell 变量值作为变量名

298 天前
 journalist
b=c
ac=1
d="a${b}"

想将 b 的值作为变量名,输出 1 ,echo ${!d} 返回 -ash: syntax error: bad substitution,有没有别的方法(如果不用定义 d 就更好)?

1634 次点击
所在节点    Linux
5 条回复
soy
298 天前
$ eval "echo \$$d"
1
PendingOni
298 天前
```bash
ac=1;

b="c";
als="a""$b";
echo ${!als};
```
kwater
298 天前
我试了一下 gemma:7b-instruct-fp16


ash script 遇到问题, b=c;ac=1;d="a${b}"; 想将 b 的值作为变量名,输出 1 ,但是 echo ${!d} 有报错 -ash: syntax error: bad substitution


ash 脚本遇到问题,以下代码存在语法错误:

```
b=c; ac=1; d="a${b}"; echo ${!d}
```

原因:

* `${!d}` 是反向引用变量,但 `b` 的值尚未定义,导致语法错误。

正确的代码如下:

```
b=c; ac=1; d="a${b}"; echo ${!d}
```

修改后,代码如下:

```
b=c; ac=1; d="a${b}"; echo ${!d}
echo $a$c
```

执行该代码,输出为 1 。
crysislinux
298 天前
我专门装了 bash 来跑脚本。反正也不大
Jirajine
297 天前
遇事不觉 eval ,不用折腾这些花活。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1018044

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX