Bash

採購 bash 腳本不獲取函式 def

  • June 23, 2018

這是一個奇怪的 - 它應該工作。

我有這個文件 /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 "$@"
}

有誰知道為什麼它沒有被採購或其他什麼?

該函式已找到並執行,但它包含

command waldo

這就是錯誤消息所指的內容。

您可以在函式中處理此問題:

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

引用自:https://unix.stackexchange.com/questions/451515