kai*_*iya 3 shell scripting shell-script variable
我正在寻找sh与以下内容等效的内容(是的,真的。)
#!/bin/bash
exe1='filepath'
n=1
var=exe${n}
echo ${!var}
Run Code Online (Sandbox Code Playgroud)
回声应该输出的地方filepath。我想使用普通的 sh。
我已经玩了很多代码,但到目前为止我没有设法得到正确的输出。
我想实现一个类似数组的结构,我只想使用循环迭代已知数量的变量的变量名。
对于数组,我在符合 POSIX 的 shell 中找到了Arrays,但出于好奇,我仍在寻找问题的答案;)
sh与问题中显示的内容等效的脚本:
#!/bin/sh
exe1='filepath'
n=1
var=exe$n
eval "echo \"\$$var\"" # or: eval 'echo "$'"$var"'"'
Run Code Online (Sandbox Code Playgroud)
该eval行将在当前环境中将给定的字符串评估为命令。给定的字符串是echo \"\$$var\",在变量被扩展等之后,它会变成echo "$exe1"。这被传递给eval重新评估,并且命令打印字符串filepath。
您还提到了数组。确实,POSIX shshell 没有与 egbash具有相同意义的命名数组,但它仍然具有位置参数列表。
有了它,您可以做大多数需要在 shell 中使用列表做的事情。
例如,
set -- 'filepath1' 'filepath2' 'filepath3'
for name in "$@"; do # or: for name do
echo "$name"
done
Run Code Online (Sandbox Code Playgroud)
这和刚才一样
for name in 'filepath1' 'filepath2' 'filepath3'
do
echo "$name"
done
Run Code Online (Sandbox Code Playgroud)
由于我很确定您要实现的目标,因此我无法提出更有趣的示例。但是在这里你有一个类似数组的结构,你可以迭代它。为什么要迭代变量名仍然不清楚。
| 归档时间: |
|
| 查看次数: |
1262 次 |
| 最近记录: |