필자가 쓰고있는 쉘 스크립트에 bash 함수에 문제가있다. 함수는 다음과 같습니다bash : 함수 인자 확장하기
do_command() {
if [[ $DRY_RUN ]]; then
echo [email protected]
else
[email protected]
fi
}
함수는 간단하다 DRY_RUN 플래그가 설정되어 있다면 우리가 그렇지 않으면 실행되는 인쇄 방법. 이것은 내가 등의 다른 버전을 시도 자식 태그 명령을 제외한 대부분의 명령에 대해 잘 작동 : 실제로 태그 명령을 실행
do_command git tag -a $NEW_VERSION -m '$INPUT_COMMENT'
을하지만, $ INPUT_COMMENT
내가이 다른 시도 주석 줄 올바른 에코 출력을 제공하지만 git tag 명령을 실행할 수없는 버전.
do_command git tag -a $NEW_VERSION -m "$INPUT_COMMENT"
및
do_command git tag -a $NEW_VERSION -m "\"$INPUT_COMMENT\""
이 호출의 일부가 모두 에코 만드는 방법과 자식 명령 일이 있습니까? 아니면 do_command 버전에서 구문 분석해야합니까?
BTW, http://shellcheck.net/ 인간의 검토를 호출 할 필요없이이 일을 잡은 것이다. –
(다른 이름으로는 대문자로 된 이름은 쉘 내장 변수와 환경 변수에 일반적으로 사용되는 이름이지만 일반적으로 내 보낸 적이없는 변수에는 사용하지 않는 것이 좋지 않습니다. 다른 범주의 변수를 실수로 덮어 쓸 수 있음을 의미합니다). –
'do_command'와 같은 명령은 간단한 명령에서만 작동한다는 점에 유의하십시오. 파이프가없고,'&&'/'||'리스트가없고, I/O 리다이렉션도없고 복잡한 명령도 없다 : 명령 이름과 그 인수를 초월한 구문을 필요로하는 것은 아무것도 없다. – chepner