如何在bash中读取字符串数组

时间:2015-06-30 08:05:33

标签: arrays bash input user-input

我是一名新的bash学员。我想知道,如何从标准输入中获取字符串列表?在取完所有字符串之后,我想将它们分开打印。

说输入如下:

Namibia
Nauru
Nepal
Netherlands
NewZealand
Nicaragua
Niger
Nigeria
NorthKorea
Norway

输出应该是:

Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway

我只能在bash中读取变量,然后可以按以下方式打印:

read a
echo "$a"

请注意:

  

This question没有回答我的问题。它主要是遍历声明的数组。但我的情况是处理输入并在运行时附加数组以及检测EOF

2 个答案:

答案 0 :(得分:5)

您可以在带有bash数组的循环中使用read

countries=()
while read -r country; do
    countries+=( "$country" )
done
echo "${countries[@]}"

如果以交互方式使用, Ctrl - d 会终止循环,否则会在read失败后终止(例如在EOF处)。每个国家/地区都印在同一条线上。

答案 1 :(得分:1)

假设您的列表是一个文件(您可以随时保存到文件中):

my_array=( $(<filename) )
echo ${my_array[@]}

从标准输入:

while :
do
read -p "Enter something: " country
my_array+="country"
done