我怎样才能在 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
。
一些有趣的文档:
这高级 Bash 脚本指南有很大数组章节
的手册页读内置
15 个数组示例来自 thegeekstuff.com
答案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