以下命令:
$ read input
hello \
> world
$ echo "$input"
允许我使用反斜杠字符输入多行输入。
我现在正在寻求更改此设置以允许不带反斜杠的多行输入。我尝试使用该-d
选项如下:
$ read -d '\n\n' input
但这并没有按预期工作。
> hello
world
每次我按下回车键,它就会继续下去。
bash 中的换行符是\n
,所以我希望输入在找到两个换行符后停止。
我该如何解决这个问题?
答案1
正如评论中提到的,我认为您不能直接使用read
.所以只需手动执行即可:
#!/bin/bash
# the function writes to global variable 'input'
getinput() {
input=
local line
# read and append to 'input' until we get an empty line
while IFS= read -r line; do
if [[ -z "$line" ]]; then break; fi
input+="$line"$'\n'
done
}
printf "Please enter input, end with an empty line:\n"
getinput
printf "got %d characters:\n>>>\n%s<<<\n" "${#input}" "$input"
严格来说,这并不查找两个换行符,而只是查找一个空输入行。这可能是第一个。