这是一个奇怪的——它应该可以工作。
我有这个文件 /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