我能够批量执行以下操作,但对于我的生活,我无法弄清楚如何在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
我现在可以轻松使用所需的行。
答案 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支持数组。