2017-10-03 4 views
0

이것은 더 일반적인 질문 일 수 있습니다. 스크립트를 만들 때 여러 개의 printf 또는 echo 문 대신 여러 줄의 문자열을 사용하는 것이 좋을 것이라고 생각했습니다. Bash - 들여 쓰기 된 여러 줄 문자열에서 공백 제거

while : 
do 
printf "line 1 
line 2 
line 3" 
done 

두 번째와 세 번째 라인

때문에 파일의 들여 쓰기의 앞에 공백으로 인쇄 할 것이다 : 나는 다음과 같은 말해봐.

l1 
line 2 
line 3 

코드에서 들여 쓰기를 제거하는 것을 방지 할 수있는 방법이 있습니까? 또한 여러 행에 걸쳐있는 정보를 출력해야하는 경우 여러 개의 printf/echo 문을 사용하는 것이 더 나은 방법으로 간주됩니까?

답변

2

(여기 공백) 탭 들여 쓰기 및 난 두려워,

cat <<- EOF 
    line 1 
    line 2 
    line 3 
EOF 
+1

을 ** 참고 : **로 "* 들여 쓰기에주의하십시오 * 'tabs' (공백 문자는 사용하지 않습니다). 편집기가'tabs' 대신에 공백을 삽입하면 들여 쓰기를 없애고 단순히'hedoc * sigil '으로'<<'를 사용하면됩니다. –

1

멀티 라인 문자열은 항상 조금 나쁘게 보이게하는 heredoc (<<-으로) 사용하거나 다른 단점이있다. bash 코드에 이들을 삽입하는 가장 읽기 쉬운 방법은 아마도 here-doc 일 것인데, 출력 할 때와 똑같은 문자열을 보여줍니다. 여분의 숙련 된 기술로, 당신은 너무 좋아, 너무 문자열 자체에서 눈에 띄는 여기에-문서 구분 기호를 만들기 위해 여분의 문장 부호를 사용할 수 있습니다

if true 
then 
    some commands 

    cat <<"____EndOfTextBlock____" 
This text here 
spans multiple   
lines. 
____EndOfTextBlock____ 

    some other commands 
    even more commands 
fi