Openwrt shell 变量值作为变量名

2024-02-24 07:23:17 +08:00
 journalist
b=c
ac=1
d="a${b}"

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

2038 次点击
所在节点    Linux
5 条回复
soy
2024-02-24 09:38:17 +08:00
$ eval "echo \$$d"
1
PendingOni
2024-02-24 09:41:13 +08:00
```bash
ac=1;

b="c";
als="a""$b";
echo ${!als};
```
kwater
2024-02-24 10:26:49 +08:00
我试了一下 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
2024-02-24 10:29:59 +08:00
我专门装了 bash 来跑脚本。反正也不大
Jirajine
2024-02-24 13:09:42 +08:00
遇事不觉 eval ,不用折腾这些花活。

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

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

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

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

© 2021 V2EX