Bash
採購 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 "$@" }
有誰知道為什麼它沒有被採購或其他什麼?
該函式已找到並執行,但它包含
command waldo
這就是錯誤消息所指的內容。
您可以在函式中處理此問題:
if hash waldo >/dev/null 2>&1; then command waldo "$@" else echo 'ERROR: ...' fi