해결 방법 함수가있는 스크립트 :

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" 

누구든지 메시지가 발생하는 이유를 알고 있습니까?

댓글

  • INSTALL_LOG_OUTPUT 비어있는 것이 한 가지 이유입니다.
  • if 문의 두 번째 test에 구문 오류가 있습니다. [ "$argument" == "-automatic" ]; then 여야합니다. 보고 된 오류와 관련이있을 수도 있고 아닐 수도 있습니다.
  • @muru : 당신이 옳았습니다. $INSTALL_LOG_OUTPUT에 대한 파일 이름 할당은 3 줄 이후였습니다. -.-

Answer

다음과 같이 함수에서 INSTALL_LOG_OUTPUT 주위에 따옴표를 넣으십시오.

function install_log() { echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1 } 

스크립트를 다시 실행하면 다음과 같은 오류 메시지가 표시 될 것입니다. INSTALL_LOG_OUTPUT이 비어 있고 다음과 같은 종류의 메시지가 있습니다. bash: : No such file or directory.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다