【问题标题】:linux bash script get user input and store in a arraylinux bash脚本获取用户输入并存储在数组中
【发布时间】:2017-02-03 09:38:46
【问题描述】:

我想编写一个 bash 脚本来获取用户输入并将其存储在一个数组中。 输入:1 4 6 9 11 17 22

我希望将其保存为数组。

【问题讨论】:

  • 你不需要一个数组来循环这些值。
  • 我不想运行动态循环。输入将用于代码中的进一步循环。
  • 只要不需要随机访问(索引),就没有理由使用数组。
  • 我怎样才能把它保存在一个数组中?

标签: linux bash shell


【解决方案1】:

这样读:

read -a arr

测试:

read -a arr <<< "1 4 6 9 11 17 22"

打印数组中的元素数:

echo ${#arr[@]}

OR 循环遍历上面的数组

for i in ${arr[@]}
do
   echo $i # or do whatever with individual element of the array
done

【讨论】:

  • @anubhava:你能解释一下为什么会有@吗?现在我得到了意外的令牌错误。我认为 for 括号不平衡
  • 你可以试试报价吗:for i in "${arr[@]}"
【解决方案2】:

这是我的 2 美分。

#!/bin/sh

read -p "Enter server names separated by 'space' : " input

for i in ${input[@]}
do
   echo ""
   echo "User entered value :"$i    # or do whatever with individual element of the array
   echo ""
done

【讨论】:

    【解决方案3】:

    这个怎么样:

    while read line
    do
        my_array=("${my_array[@]}" $line)
    done
    printf -- 'data%s ' "${my_array[@]}"
    

    按 Ctrl-D 停止输入数字。

    【讨论】:

    • my_array+=( $line ) 会简单得多。
    猜你喜欢
    • 2013-03-23
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2013-01-18
    相关资源
    最近更新 更多