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.

-r호출 에서 이를 제거 하면 read이스케이프된 줄바꿈을 사용하여 입력을 읽을 수 있습니다.

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

이를 사용할 때 발생하는 상황과 비교합니다 -r(예:대개지금 뭐하고 있어?):

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

그렇지 않은 경우 단일 백슬래시를 읽으려면 -r입력해야 합니다 .\\

관련된:

관련 정보