如何在 bash shell 脚本中调用函数

suf*_*ery 4 linux bash shell

我只是想知道在 bash shell 脚本之间$(one_function)one_function中调用函数的区别。

当我在 中设置变量PS1~/.bashrc,我无法通过one_func ex调用该函数:

export PS1="\n\[\e[31m\] \$(one_func)  # it works 

export PS1="\n\[\e[31m\] one_func      # it doesn't work
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

与访问变量的方式相反,函数是按名称调用的,名称前不加“$”。

您可能对如何在命令行上定义一个函数并按名称调用该函数感到困惑,但在您的 PS1 中,您必须将命令放在括号中并以 '\$' 开头。将函数名称括在 '$(' 和 ')' 中会导致整个 '$(function)' 被该函数的标准输出替换。将反斜杠放在它前面会导致您的 shell 每次想要输出 $PS1 时都会评估/运行该函数。如果您没有使用反斜杠,那么在您第一次定义 PS1 时,该函数只会被调用一次,并且无论该函数第一次的输出是什么,从那时起都将永远出现在您的 PS1 提示符中。