开发者社区 问答 正文

在bash的while循环中我的数组出现奇怪的结果

我想在while循环内的bash中填充一个简单的数组。

我尝试这样做:

read -p " Value : " nb

declare -a array

while [[ $nb != "s" ]]
do
    read -p " Value : " nb
    array+=("$nb")
done

echo ${array[@]}

如果我尝试使用1,2,3,4和5作为值,则输出为:

Value : 1
Value : 2
Value : 3
Value : 4
Value : 5 ( to stop the loop and display the array )
2 3 4 5 s

或者,我要这个输出:

Value : 1
Value : 2
Value : 3
Value : 4
Value : 5
Value : s

1 2 3 4 5 你能告诉我我的剧本怎么了吗?

展开
收起
祖安文状元 2020-01-06 16:33:45 316 分享 版权
1 条回答
写回答
取消 提交回答
  • while循环内的两行代码需要交换。

    read -p " Value : " nb
    
    declare -a array
    
    while [[ $nb != "s" ]] do
        array+=("$nb")
        read -p " Value : " nb
    done
    echo ${array[@]}
    
    

    现在,您的第一次读取将放入数组中,而您最后一次读取(退出循环)将不会放入数组中。

    2020-01-06 16:34:02
    赞同 展开评论
问答分类:
问答地址: