구매 bash 스크립트가 함수 정의를 얻지 못함

구매 bash 스크립트가 함수 정의를 얻지 못함

이것은 이상한 것입니다. 작동해야 합니다.

이 파일이 있어요 /home/foo/waldo.sh

#!/usr/bin/env bash

waldo(){

   if [[ -z $(command -v waldo) ]]; then
       npm install -g '@oresoftware/waldo' || {
         return 1;
      }
   fi

   command waldo "$@"
}


export -f waldo;

다음을 사용하여 파일을 얻는 경우:

. "/home/foo/waldo.sh";

그런 다음 실행

waldo

나는 얻다:

No command 'waldo' found, did you mean:
 Command 'aldo' from package 'aldo' (universe)
waldo: command not found

내가 실행하면 $(which waldo)비어 있고 아무것도 없습니다.

그러나 실행하면 다음과 같은 결과 type waldo가 나타납니다.

waldo is a function
waldo () 
{ 
    if [[ -z $(command -v waldo) ]]; then
        npm install -g '@oresoftware/waldo' || { 
            return 1
        };
    fi;
    command waldo "$@"
}

왜 조달되지 않았는지 아는 사람이 있나요?

답변1

함수가 발견되어 실행되지만 다음을 포함합니다.

command waldo

이것이 오류 메시지가 말하는 것입니다.

함수에서 이를 처리할 수 있습니다.

if hash waldo >/dev/null 2>&1; then
    command waldo "$@"
else
    echo 'ERROR: ...'
fi

관련 정보