수색…


여기에 들여 쓰기 문서

당신은 탭 문서, 당신은 사용할 필요가 여기에 내부의 텍스트를 들여 쓰기 수 있습니다 <<- 대신 리디렉션 연산자를 << :

$ cat <<- EOF
    This is some content indented with tabs `\t`.
    You cannot indent with spaces you __have__ to use tabs.
    Bash will remove empty space before these lines.
    __Note__: Be sure to replace spaces with tabs when copying this example.
EOF

This is some content indented with tabs _\t_.
You cannot indent with spaces you __have__ to use tabs.
Bash will remove empty space before these lines.
__Note__: Be sure to replace spaces with tabs when copying this example.

이것 ( man bash 에서 언급했듯이)의 실제 사용 사례는 쉘 스크립트에 있습니다. 예를 들면 다음과 같습니다.

if cond; then
    cat <<- EOF
    hello
    there
    EOF
fi

가독성을 높이기 위해이 if 문과 같이 코드 블록 내의 행을 들여 쓰는 것이 일반적입니다. <<- 연산자 구문이 없으면 위의 코드를 다음과 같이 작성해야합니다.

if cond; then
    cat << EOF
hello
there
EOF
fi

그것은 읽기가 매우 불편하며,보다 복잡한 현실적인 스크립트에서 훨씬 더 나 빠지게됩니다.

여기에 문자열

2.05b

다음과 같이 문자열을 사용하여 명령을 제공 할 수 있습니다.

$ awk '{print $2}' <<< "hello world - how are you?"
world

$ awk '{print $1}' <<< "hello how are you
> she is fine"
hello
she

while 문자열에 here 문자열을 입력 할 수도 있습니다.

$ while IFS=" " read -r word1 word2 rest
> do
> echo "$word1"
> done <<< "hello how are you - i am fine"
hello

문자열 제한

heredoclimitstring 을 사용하여 입력 소비를 중지 할시기를 결정합니다. 종료 제한 문자열

  • 줄의 시작 부분에 있어야합니다.
  • 줄의 유일한 텍스트 Note : <<- 를 사용한다면 <<- limitstring 앞에 탭을 붙일 수 있습니다 \t

옳은:

cat <<limitstring
line 1
line 2
limitstring

그러면 다음과 같이 출력됩니다.

line 1
line 2

잘못된 사용 :

cat <<limitstring
line 1
line 2
 limitstring

마지막 줄의 limitstring 은 정확히 줄의 시작 부분이 아니기 때문에 쉘은 limitstring 시작하고 다른 내용을 포함하지 않는 줄을 볼 때까지 추가 입력을 기다립니다. 그런 다음에는 입력 대기를 중지하고 here-document를 cat 명령으로 전달합니다.

초기 제한 문자열에 하이픈을 접두사로 붙이면 구문 분석 전에 행 시작 부분의 탭이 제거되므로 데이터와 제한 문자열을 탭으로 들여 쓸 수 있습니다 (셸 스크립트에서 읽기 쉽도록).

cat <<-limitstring
        line 1    has a tab each before the words line and has
            line 2 has two leading tabs
        limitstring

생산할 것이다

line 1    has a tab each before the words line and has
line 2 has two leading tabs

선행 탭 (내부 탭 제외)이 제거되었습니다.

파일 만들기

이 문서의 고전적인 사용은 내용을 입력하여 파일을 만드는 것입니다.

cat > fruits.txt << EOF
apple
orange
lemon
EOF

here-document는 << EOFEOF 사이의 줄입니다.

이 문서는 cat 명령의 입력이됩니다. cat 명령은 단순히 입력을 출력하고 출력 경로 재 지정 연산자 > 사용하여 fruits.txt 파일로 리디렉션합니다.

결과적으로 fruits.txt 파일에는 다음 행이 포함됩니다.

apple
orange
lemon

출력 경로 재 지정의 일반적인 규칙이 적용됩니다. fruits.txt 가 전에 존재하지 않았 으면 생성됩니다. 이전에 존재하면 잘립니다.

이 문서와 함께 명령을 실행하십시오.

ssh -p 21 [email protected] <<EOF
  echo 'printing pwd'
  echo "\$(pwd)"
  ls -a
  find '*.txt'
EOF

$ 는 현재 쉘에 의해 확장되기를 원하지 않기 때문에 이스케이프 처리됩니다. 즉 $(pwd) 는 원격 쉘에서 실행됩니다.

또 다른 방법:

ssh -p 21 [email protected] <<'EOF'
  echo 'printing pwd'
  echo "$(pwd)"
  ls -a
  find '*.txt'
EOF    

참고 : 닫는 EOF 줄의 시작 부분에 있어야합니다 (앞에 공백 없음). 들여 쓰기가 필요한 경우, <<- 사용하여 heredoc을 시작하면 탭이 사용될 수 있습니다. 자세한 내용은 여기들여 쓰기 문서문자열 제한 예제를 참조하십시오.

sudo를 사용하여 여러 명령 실행

sudo -s <<EOF
  a='var'
  echo 'Running serveral commands with sudo'
  mktemp -d
  echo "\$a"
EOF
  • $a 가 현재 쉘에서 확장되지 않도록 이스케이프 처리해야합니다.

또는

sudo -s <<'EOF'
  a='var'
  echo 'Running serveral commands with sudo'
  mktemp -d
  echo "$a"
EOF


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow