2010-02-19 2 views
5

bash 스크립트의 적절한 들여 쓰기는 무엇입니까? 자바/C + + 원숭이로서 나는 종교적으로 내 코드를 들여 씁니다. 그러나이 코드를 들여 쓰기를 할 수 없습니다 것 같다 bash 스크립트의 적절한 들여 쓰기는 무엇입니까?

#! /bin/bash 

if [ $# = 0 ] 
then 
     # there was no arguments => just do to standard output. 
     echo "there are no parameters" 
else 
cat << EOF 
========================================================== 
========================================================== 
========================================================== 
========================================================== 
DESCRIPTION: 

$1 
---------------------------------------------------------- 

EOF 
fi 

이는 EOF를 인식하지 못하는 들여 쓰기를 할 때 당신은 단지 (혼란)에 EOF를 들여 쓰기 해제하는 경우는 들여 쓰기 인쇄합니다.

Q : bash 스크립트에 적합한 들여 쓰기는 무엇입니까?

+0

대부분의 프로그래밍 언어 (여기 문서를 bash는 매뉴얼 페이지를 참조하십시오), "들여 쓰기"할 수 있습니다. 이것은 bash에 정말로 국한되지 않습니다. –

답변

18

bash (3.2 이상) 및 ksh (다른 사람에 대해 알지 못함)를 사용하면 <<-을 사용하여 여기에 들여 쓰기 할 수 있으며, 선행 탭은 공백이 아닌 탭으로 제거됩니다 (예 :

if [...]; then 
    cat <<-EOF 
     some text 
    EOF 
fi 
+2

알아두면 좋을 점은 시작 구분 기호를 인용하면 here- 문서의 확장 (매개 변수, 명령 대체 등)을 방지 할 수 있다는 것입니다.'foo << "EOF"와 결합 될 수 있습니다 :'foo << - "EOF"'. 후자는 코드 블록을 주석으로 처리하는 데 유용합니다 (no-op':'를 수신 명령으로 사용하거나 생략 할 수 있습니다). 또한,'<< -'를 사용하는 경우 닫는 구분 기호 (또는 실제로는 어떤 줄)를 들여 쓰고 싶은지 선택할 수 있습니다. –

+0

다른 대답에 대한 내 의견을 참조하십시오, 여기에 문서의 끝 표시를 들여 쓰기 할 수 없습니다. – haridsv

+0

도 '대시'에서 작동합니다. –

2

이것은 bash 들여 쓰기 문제는 아니며, 여기에 파일 문제입니다. << 다음에 지정하는 레이블, 즉 EOF은 선행 공백이나 후행 공백없이 한 행에 단독으로 나타나야합니다.

여기 파일 자체는 입력 된 것과 들여 쓰기로 사용됩니다.

+0

there is _is_ a solution ('<< -'), 다른 대답을 참조하십시오. –

-1

묵시적입니다.

들여 쓰기를 유지하려면 여기에 파일 텍스트를 별도의 파일에 넣을 수 있습니다. 그런 다음 직접 대용품을 처리해야합니다.

4

그래 당신은 <<-를 사용하여 HEREDOCs이 들여 쓰기 문제가 있습니다

if [ $# = 0 ] 
then 
     # there was no arguments => just do to standard output. 
     echo "there are no parameters" 
else 
    cat <<-EOF 
    ========================================================== 
    ========================================================== 
    ========================================================== 
    ========================================================== 
    DESCRIPTION: 

    $1 
    ---------------------------------------------------------- 
    EOF 
fi 
+0

+1. 나는 그 특징을 몰랐다! – mouviciel

+1

이것은 약간 잘못되었지만이 문서의 끝 표식은 여전히 ​​들여 쓸 수 없습니다. 실제로이 문서에 대한 가장 큰 불만은 선두 탭을 쳐서 들여 쓰기 (2 칸을 들여 쓰기를 원함)이며 여전히 최종 표식을 들여 쓸 수 없다는 것입니다. – haridsv

+1

@haridsv 실제로 **'GNU bash 4.3.11'과 'dash 0.5.7'에서 최종 마커를 들여 쓸 수 있습니다 –

관련 문제