我是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
你有什么想法吗?或者有一种完全不同的方式可以做到这一点?谢谢你的帮助。
答案 0 :(得分:0)
您可以将IFS设置为换行符,以便只有换行符才能分隔数组中的项目。
IFS=$'\n' readarray lines
第一行读取为${lines[0]}
,第二行为${lines[1]}
,等等。${#lines[@]}
告诉您有多少行,最后一行为${lines[${#lines[@]}-1]}
。
要遍历数组,您应该使用"${lines[@]}"
,而不是${lines[*]}
;后者会带你回到单个词的循环。