3

在 bash 中,我尝试创建一个数组,然后多次循环运行(由文件的用户确定),然后将选项添加到该数组中预定的次数。这是贸易数据,例如,我选择 2 作为因子。然后程序要求我输入我想要的因子,然后我输入 open(当天的开盘价),然后将 bid 添加到数组 arr 并再次提出问题。然后我输入收盘价(当天的收盘价),然后将收盘价添加到数组中,最后 arr = open close 这样。但是我运行代码和问题:"How many factors would you like to check total: "只是一遍又一遍地运行,我从不离开循环,而且似乎从来没有将输入放入数组中。非常感谢对我的错误的任何帮助。谢谢。

   factor=""
    total=0
    declare -a arr


read -p "How many factors would you like to check total: " -e -i "$total" total

for (( x=1; x=total; x++ ))
do
        read -p "Enter factor from list: " -e -i "$factor" factor       
        arr+=(${arr[@]} "$factor")
done

echo ${arr[@]}
4

2 回答 2

5

你几乎在数组追加上得到了正确的结果。请记住,+=运算符不需要在 RHS 上再次完全引用数组。例如只是

arr+=($factor)

$factor在数组变量的末尾追加就足够了arr

像这样修改你的脚本:

factor=""
total=0
declare -a arr

read -p "How many factors would you like to check total: " -e -i "$total" total

for (( x=1; x<=total; x++ ))
do
   read -p "Enter factor from list: " -e -i "$factor" factor       
   arr+=($factor)
done

echo ${arr[@]}
于 2013-05-09T19:20:19.533 回答
4

你有一个错字

for (( x=1; x=total; x++ ))

应该

for (( x=1; x==total; x++ ))

在第一个中,您将总计分配给 x,这始终是正确的。在第二个中,您正在检查是否相等。

于 2013-05-09T19:15:18.777 回答