Bash“延迟扩展”和嵌套变量

时间:2016-10-31 15:39:08

标签: bash

我能够批量执行以下操作,但对于我的生活,我无法弄清楚如何在bash中执行此操作并可以使用一些帮助。基本上,我使用for循环和延迟扩展来设置变量,因为for循环遍历数组。它看起来像这样:

FOR /L %%A in (1,1,10) DO (
   SET someVar = !inputVar[%%A]!
)

括号仅供参考。

我现在在bash中遇到了类似的问题,但无法弄清楚“延迟扩展”(如果这甚至是bash中的调用)如何工作:

for (( a=1; a<=10; a++ )); do
   VAR${!a}= some other thing
done

我完全不在这里吗?

更新

所以看起来我完全偏离了基础,@ muru对XY问题的暗示使我重新审视了我在做什么。我的真实问题的简单解决方案是:

readarray -t array < /filepath

我现在可以轻松使用所需的行。

1 个答案:

答案 0 :(得分:1)

我认为,在这种情况下,a可以提供帮助。不确定,如果这是最好的选择,但可以工作。

eval

INPUT_VAR=(fish cat elephant) SOME_VAR= for i in `seq 0 3`;do SOME_VAR[$i]='${INPUT_VAR['"$i"']}' done echo "${SOME_VAR[2]}" # ${INPUT_VAR[2]} eval echo "${SOME_VAR[2]}" # elephant 解释: eval command in Bash and its typical uses

在bash中使用数组也会有所帮助: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_02.html

请注意,只有新版本的bash支持数组。