購入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

おすすめ記事