[bash] bash에게 줄이 다음 줄에서 계속된다는 것을 알리는 방법

다른 프로그래머로부터받은 bash 스크립트에서 일부 행의 길이가 80 열을 초과했습니다. 행이 다음 행에서 계속됨을 표시하기 위해 행에 추가 할 문자 또는 사물은 무엇입니까?



답변

문자가 백 슬래시입니다. \

로부터 bash는 설명서 :

백 슬래시 문자 ‘\’는 읽은 다음 문자 및 행 연속에 대한 특별한 의미를 제거하는 데 사용할 수 있습니다.


답변

일반적으로 명령이 다음 행으로 계속되도록하려면 행 끝에 백 슬래시를 사용할 수 있습니다. 그러나 명령이 묵시적으로 계속되는 경우가 있습니다. 즉, 행이 토큰으로 끝날 때 합법적으로 명령을 종료 할 수없는 경우입니다. 이 경우 셸은 더 많은 정보가 있음을 알고 백 슬래시를 생략 할 수 있습니다. 몇 가지 예 :

# In general
$ echo "foo" \
> "bar"
foo bar

# Pipes
$ echo foo |
> cat
foo

# && and ||
$ echo foo &&
> echo bar
foo
bar
$ false ||
> echo bar
bar

다르지만 관련이있는 것은 따옴표 안의 암시 적 연속입니다. 이 경우 백 슬래시 없이 단순히 문자열에 개행을 추가하는 것입니다.

$ x="foo
> bar"
$ echo "$x"
foo
bar

백 슬래시를 사용 하면 논리 줄을 다시 여러 논리 줄로 분할합니다.

$ x="foo\
> bar"
$ echo "$x"
foobar


답변

\일을합니다. @Guillaume의 답변과 @George의 의견은이 질문에 명확하게 대답합니다. 다음은 The backslash has to be the very last character before the end of line character.이 명령을 고려하는 이유를 설명합니다 .

   mysql -uroot \
   -hlocalhost

뒤에 공백이 있으면 \줄 연속이 작동하지 않습니다. 그 이유는 \ 보이지 않는 줄 바꿈 문자가 아닌 공백 인 다음 문자에 대한 특별한 의미를 제거하기 때문입니다 . 줄 바꿈 문자는 \이 예에서가 아닌 공백 뒤에 있습니다.


답변