2011-03-24 2 views
2

내부의 파일 나는 다음과 같은 일을 구현할 수있는 방법을 궁금해하고있다. bash(1)에서고양이 쉘 기능

+1

나는 방금 생각 했나요? – SiegeX

+0

cat에 bash 함수 안에있는 파일을 의미합니까? – pajton

+0

@SiegeX : 붙여 넣은 코드가 내 편이 아닙니다. 그것은 당신의 터미널에서 작동합니까? 내 터미널은 코드를 복사/붙여 넣기 한 후에 멈출 수 있다고 판단하지 않습니다. –

답변

6

치앙 input() 변경되었습니다.

+0

이것은 하나의 트릭을 않습니다. 두 번째 EOF 앞에 공백/탭 문자 (줄 바꿈 문자가 맞음)를 제거하면 문제가되지 않습니다. –

4

:

If the redirection operator is <<-, then all leading tab 
characters are stripped from input lines and the line 
containing delimiter. This allows here-documents within 
shell scripts to be indented in a natural fashion. 

그것은 tab을 말한다, 나의 테스트, tab 작품,하지만 공간은하지 않습니다 :

#!/bin/bash 

cat>file <<-END 
    hello 
    world 
    hello 
    END 

echo done 

(그 모든 들여 쓰기는 탭이 있습니다하며 코드의 4 행간 스페이스 마크 업에 대한 재미있는 점은 렌더링 된 텍스트에 4 개의 공백 만 표시된다는 것을 의미합니다.

1

코드가 잘 작동해야하며 찾고있는 것이 있습니까?

#!/bin/sh 

input() { 
    cat > file <<EOF 
input 
line 
another line 
EOF 
} 

input 

EDIT (그래서 그것 자체 라인 들여 여부에 'S)

EOF가 앞의 공백을 제거 function input

+0

'function' 키워드를 사용하지 마십시오. POSIX가 아니며 더 이상 사용되지 않습니다. 대신 OP가'input()'으로했던 것을 사용하십시오. – SiegeX

+0

감사합니다. function 키워드가 POSIX를 준수하지 않으며 실제로는 사용되지 않습니다. 가장 높이 평가! – Suroot