【发布时间】:2017-05-01 06:20:54
【问题描述】:
我正在尝试将用户的输入输入到一个数组中,但 Shell 正在接受以空格分隔的用户输入。有没有办法接受在每一行中单独给出的用户输入。我的代码如下:
#!/bin/bash
echo "enter the servers names..."
read -a array
for i in "${array[@]}"
do
echo $i
done
exit 0
输入:
hello world
我希望输入如下(在两个不同的行中):
hello
world
请帮助。谢谢。
【问题讨论】:
-
在
read之前设置IFS=$'\n'以仅在换行符处换行。 (您可以保存旧值,例如(oldIFS=IFS在更改它之前,在循环之后恢复原来的IFS=oldIFS- 这里不需要,因为您只是exit) -
你的意思是这样 -
IFS=$'\n' read -a array? -
听起来你想对输入进行预处理。尝试
tr -s ' ' '\n' | read -a ...,并注意这将使变量仅在管道创建的子shell 中可用。这也将为您处理空行(除非该空行位于输入的开头)。