如何在 bash 中读取多行输入

如何在 bash 中读取多行输入

我有这个脚本:

#!/usr/bin/env bash
main() {
  while true; do 
    read -r -ep "> " input
    history -s "$input"
    echo "$input"
  done
}
main

这对于单行字符串效果很好。

现在我希望允许用户输入多行字符串,例如如下所示:

> foo \
> bar
foobar

如何修改我的读取命令以允许此功能?

答案1

你明确地禁用反斜杠的特殊处理-r

如果您-rread调用中删除,您将能够使用转义的换行符读取您的输入:

$ read input
hello \
> world
$ echo "$input"
hello world

将其与使用时发生的情况进行比较-r(即通常你想做什么):

$ read -r input
hello \
$ echo "$input"
hello \

请注意,如果没有-r,您将必须输入\\才能读取单个反斜杠。

有关的:

相关内容