采购 bash 脚本不获取函数 def

采购 bash 脚本不获取函数 def

这是一个奇怪的——它应该可以工作。

我有这个文件 /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

相关内容