
이 스크립트가 있습니다.
#!/usr/bin/env bash
main() {
while true; do
read -r -ep "> " input
history -s "$input"
echo "$input"
done
}
main
이는 단일 행 문자열에 적합합니다.
이제 사용자가 다음과 같이 여러 줄의 문자열을 입력할 수 있도록 허용하고 싶습니다.
> foo \
> bar
foobar
이 기능을 허용하려면 읽기 명령을 어떻게 수정해야 합니까?
답변1
당신은 명시적으로장애를 입히다백슬래시의 특수 처리 -r
.
-r
호출 에서 이를 제거 하면 read
이스케이프된 줄바꿈을 사용하여 입력을 읽을 수 있습니다.
$ read input
hello \
> world
$ echo "$input"
hello world
이를 사용할 때 발생하는 상황과 비교합니다 -r
(예:대개지금 뭐하고 있어?):
$ read -r input
hello \
$ echo "$input"
hello \
그렇지 않은 경우 단일 백슬래시를 읽으려면 -r
입력해야 합니다 .\\
관련된: