해결 방법 함수가있는 스크립트 :
function install_log() { echo "$1" >> $INSTALL_LOG_OUTPUT 2>&1 }
이 함수는 정상적으로 작동합니다. 로그 파일에 무언가를 쓰는 기능입니다.
스크립트의 주어진 매개 변수를 읽기 위해 스크립트에 몇 가지 다른 명령을 추가했습니다.
AUTOMATIC_INSTALL= for argument in "$@" do install_log "-> parameter $argument" if [ "$argument" == "--automatic" ] || ["$argument" == "-automatic" ]; then AUTOMATIC_INSTALL=True fi done install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL"
하지만 새 줄을 사용하면 필요하지 않은 메시지가 표시됩니다.
$INSTALL_LOG_OUTPUT: ambiguous redirect
두 줄에서 온다는 것을 알았습니다.
install_log "-> parameter $argument" # ... install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL"
누구든지 메시지가 발생하는 이유를 알고 있습니까?
댓글
Answer
다음과 같이 함수에서 INSTALL_LOG_OUTPUT 주위에 따옴표를 넣으십시오.
function install_log() { echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1 }
스크립트를 다시 실행하면 다음과 같은 오류 메시지가 표시 될 것입니다. INSTALL_LOG_OUTPUT이 비어 있고 다음과 같은 종류의 메시지가 있습니다. bash: : No such file or directory
.
INSTALL_LOG_OUTPUT
비어있는 것이 한 가지 이유입니다.if
문의 두 번째test
에 구문 오류가 있습니다.[ "$argument" == "-automatic" ]; then
여야합니다. 보고 된 오류와 관련이있을 수도 있고 아닐 수도 있습니다.$INSTALL_LOG_OUTPUT
에 대한 파일 이름 할당은 3 줄 이후였습니다. -.-