나는 종종 -로 끝나는 문자열을 커밋 메시지로 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 에서 올바르게 인용된 변수를 사용하는 것도 참고하세요 $*
).