如何在 Bash 中将用户输入读取为数组?

如何在 Bash 中将用户输入读取为数组?

我怎样才能在 shell 中将用户输入读取为数组bash

答案1

以下是一种方法:

while read line
do
    my_array=("${my_array[@]}" $line)
done

echo ${my_array[@]}

如果您只是运行它,它将一直从标准输入读取,直到您按下 Ctrl+D(EOF)。之后,您输入的行将位于 中my_array。有些人可能会觉得这段代码令人困惑。循环体基本上是my_array = my_array + element

一些有趣的文档:

答案2

使用这个来阅读:

read -a arr

对于打印,使用:

for elem in ${arr[@]}
do 
  echo $elem
done

答案3

并且每次都不需要重新创建数组(但需要 bash 3.1 或更新版本):

array=()
while IFS= read -r -p "Next item (end with an empty line): " line; do
    [[ $line ]] || break  # break if line is empty
    array+=("$line")
done

printf '%s\n' "Items read:"
printf '  «%s»\n' "${array[@]}"

http://mywiki.wooledge.org/BashFAQ/001了解更多信息。

和往常一样,为了避免编写错误,请阅读http://mywiki.wooledge.org/BashGuide并避免使用像高级 bash 脚本指南这样的 tldp 指南。

答案4

#!/bin/bash

read line 
list=(${line})

for i in ${list[@]};do
  echo $i
done

输出

./list-input.sh
banna apple pie
banna
apple
pie

相关内容