탈출 "<

탈출 "<

나는 종종 -로 끝나는 문자열을 커밋 메시지로 git commit -F- <<EOF작성하는 데 사용합니다.EOF

사용

alias commitml="git commit -F- <<EOF"

예상대로 작동합니다.

그러나 나는 주장을 전달할 수 있기를 바랍니다.

그래서 나는 내 것으로 정의하고 싶습니다 .bashrc:

commitml() {
   git commit $* -F- <<EOF
}

source()를 사용할 때 오류가 반환됩니다.

bash: 경고: 여기 문서는 6행에서 파일 끝으로 구분됩니다('EOF' 필요) bash: /home/yannick/.bashrc: 8행: 구문 오류: 예상치 못한 파일 끝

<<별칭처럼 작동하도록 어떤 방식으로든 이스케이프할 수 있습니까 ?

답변1

EOF는 함수가 정의될 ​​때 계산됩니다. 물론 Bash는 일치하는 EOF종결자를 찾을 때까지 스크립트의 나머지 부분을 건너뜁니다.

너 뭐야~인 것 같다현재 찾고 있는 것은 특정 토큰을 통해 표준 입력을 사용하는 방법입니다. 일반적인 접근 방식은 단순히 메시지를 입력하고 ctrl-D(또는 파일 끝을 알리도록 터미널이 설정된 모든 것)로 끝내는 것입니다.

commitml() {
   git commit "$@" -F-
}

commitml <<EOF물론, 원한다면 이렇게 사용할 수도 있고, 함수 이름을 다음 _commitml과 같이 바꿀 수도 있습니다.

alias commitml='_commitml <<EOF'

이는 함수에 대한 별칭의 몇 가지 유효한 사용 중 하나입니다. 작은따옴표 안의 텍스트는 실제로 별칭을 사용할 때만 평가됩니다. 그 이후의 모든 태그는 commitml전달됩니다 "$@"(quoting-buggy 에서 올바르게 인용된 변수를 사용하는 것도 참고하세요 $*).

관련 정보