다음 명령:
$ read input
hello \
> world
$ echo "$input"
백슬래시 문자를 사용하여 여러 줄 입력을 입력할 수 있습니다.
이제 백슬래시 없이 여러 줄 입력을 허용하도록 이를 변경하려고 합니다. 이 -d
옵션을 다음과 같이 사용해 보았습니다 .
$ read -d '\n\n' input
그러나 이는 예상대로 작동하지 않았습니다.
> hello
world
Enter를 누를 때마다 계속됩니다.
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"
엄밀히 말하면 이것은 두 개의 개행 문자를 찾는 것이 아니라 단지 빈 입력 줄을 찾는 것입니다. 이것이 처음일 수도 있습니다.