在bash中调用自定义函数会导致"找不到命令"

pjo*_*net 2 bash function

我在尝试此操作时在执行脚本时没有给出参数时显示默认的帮助文本:

if [[ $@ ]]; then 
    do stuff
else displayHelp; 
fi

displayHelp() {
    echo "some helptext"
}
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,在控制台上执行脚本时,它说:

./myScript.sh: Line 48: displayHelp: Command not found
Run Code Online (Sandbox Code Playgroud)

当我通过-h参数调用此函数时也会出现同样的情况

mut*_*ton 9

必须先定义函数才能使用它们.所以在调用之前先把方法放进去:

displayHelp() {
    echo "some helptext"
}

if [[ $@ ]]; then 
    do stuff
else displayHelp; 
fi
Run Code Online (Sandbox Code Playgroud)

或者将您的主代码放在另一个方法中,并在脚本的末尾调用它:

main() {
    if [[ $@ ]]; then 
        do stuff
    else displayHelp; 
    fi
}

displayHelp() {
    echo "some helptext"
}

main "$@"
Run Code Online (Sandbox Code Playgroud)