【发布时间】:2020-03-30 23:02:11
【问题描述】:
我希望一个比我聪明的好心人能帮助我。
我正在编写一个 Bash 脚本,其中有一个 for 循环,该循环将循环未知/未定义的次数。
现在,在这个for 循环中,将有一个值分配给一个变量。我们称这个变量为:$var1
每次循环执行时(我永远不知道执行了多少次),我想将$var1 中的值分配给一个数组,并在执行过程中慢慢构建数组。让我们调用数组$arr
这是我目前所拥有的:
for i in $( seq 0 $unknown ); do
...
some commands that will make $var1 change...
...
arr=("${arr[@]}" "$var1")
done
但是,当我想回显或使用数组 $arr 中的值时,我没有得到任何结果
也许有人会在正确的方向上帮助我?
非常感谢。
【问题讨论】:
-
arr+=("$var1")将填充循环内的数组,如果你真的想在循环之前/外定义一个空数组,arr=()或declare -a arr -
向我们展示您如何尝试使用数组中的值,并确保您提供的不是伪代码,而是我们可以自己运行的工作示例,无需进行任何更改即可查看您的问题(如minimal reproducible example 定义中所述)。
-
顺便说一句,一般来说,
for i in $(seq 0 $unknown)最好写成for ((i=0; i<unknown; i++))。seq不是标准化命令或 shell 本身的一部分,在不需要时运行外部命令通常效率低下。 (符合 POSIX 的替代方案更冗长:i=0; while [ "$i" -lt 10 ]; do ...; i=$((i + 1)); done——ksh 和 bash 提供更短的形式是有原因的)。 -
谢谢,查尔斯·达菲。我边走边学……
-
我已投票决定重新打开它 - 在我看来,虽然提议的欺骗与数组相关,但它完全不同 i> 关于为什么
echo ${arr}只给出第一个元素的问题。