Bash:读/读阵列多行输入

时间:2016-03-22 13:30:17

标签: bash shell

我是bash的新手,我正在尝试编写一个bash脚本来保存用户的多行输入(带有换行符的文本,一些代码行等)。我需要允许换行(当你按“Enter”时),多行粘贴(当你粘贴几行“Ctrl + V”时)并设置一个新键,而不是“回车”,以验证,发送输入并继续脚本的下一步。

我尝试使用read,但您不能使用多行。

echo "Enter content :" 
read content

我在readarray找到了一个示例(How to delete a character in bash read -d multiline input?),允许按“Enter”表示换行符,但每个按空格分隔的单词在数组中是分开的。我想只分开这些线。

echo "Enter package names, one per line: hit Ctrl-D on a blank line to stop"
readarray -t pkgs

你有什么想法吗?或者有一种完全不同的方式可以做到这一点?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将IFS设置为换行符,以便只有换行符才能分隔数组中的项目。

IFS=$'\n' readarray lines

第一行读取为${lines[0]},第二行为${lines[1]},等等。${#lines[@]}告诉您有多少行,最后一行为${lines[${#lines[@]}-1]}

要遍历数组,您应该使用"${lines[@]}",而不是${lines[*]};后者会带你回到单个词的循环。