我正在寻找以下内容的sh
等价物(是的,真的。)
#!/bin/bash
exe1='filepath'
n=1
var=exe${n}
echo ${!var}
echo 应该在哪里输出filepath
。我想使用普通的 sh。
我已经玩了很多代码,但到目前为止我还没有设法得到正确的输出。
我想实现一个类似数组的结构,我只想使用循环遍历已知数量的变量的变量名。
对于数组,我在符合 POSIX 的 shell 中找到了 Arrays,但出于好奇,我仍在寻找问题的答案;)
我正在寻找以下内容的sh
等价物(是的,真的。)
#!/bin/bash
exe1='filepath'
n=1
var=exe${n}
echo ${!var}
echo 应该在哪里输出filepath
。我想使用普通的 sh。
我已经玩了很多代码,但到目前为止我还没有设法得到正确的输出。
我想实现一个类似数组的结构,我只想使用循环遍历已知数量的变量的变量名。
对于数组,我在符合 POSIX 的 shell 中找到了 Arrays,但出于好奇,我仍在寻找问题的答案;)
与问题中提出的等效
sh
脚本:该
eval
行将在当前环境中将给定的字符串评估为命令。给定的字符串是echo \"\$$var\"
,在扩展变量等之后,它将变为echo "$exe1"
。这被传递给eval
重新评估,命令打印字符串filepath
。您还提到了数组。确实,POSIX
sh
shell 没有与 eg 相同的命名数组bash
,但它仍然具有位置参数列表。有了它,你可以做大部分你需要在 shell 中做一个列表的事情。
例如,
这和刚才一样
由于我确信您要达到的目标是什么,所以我想不出一个更有趣的例子。但是在这里你有一个类似数组的结构,你可以迭代。为什么要迭代变量的名称仍然不清楚。
如果您想遍历多个文件(从
exe1=filepath
示例中暗示),那么简单的 for 循环是否有效?final_file
是保存与 file_pattern 匹配的最后一个文件的变量 - 复制 bash${!var}
(最后一个参数引用)。