在许多情况下,我需要创建与其他程序同名的函数,我不知道这是否是使用 bash 脚本的好方法。
例子:
function echo () {
echo -n "$@" ;
}
Run Code Online (Sandbox Code Playgroud)
经过测试,它看起来像是在 bin 路径之前检查脚本内的函数名称。我想确保这一点以及我应该知道的任何其他信息。
echo() {
command echo -n "$@"
}
Run Code Online (Sandbox Code Playgroud)
command
在这里使用意味着要求echo
命令(恰好是内置在这里)而不是函数,否则会优先。
因为在这里,echo
也恰好是一个内置命令(在$PATH
BTW 中没有查找,因为内置命令优先于文件系统命令),你也可以这样做:
echo() {
builtin echo -n "$@"
}
Run Code Online (Sandbox Code Playgroud)
后一种方法在zsh
, where command echo
will run 中更可取/bin/echo
(sh
仿真除外)。
外壳之间有一些细微的差异,但优先顺序通常是:
$PATH
(并且顺序取决于由内置程序管理$PATH
的hash
表中和表中的顺序hash
)请记住,shell 语法 ( for
, if
...)中的别名和关键字在未引用时被考虑在它们之前。
的顺序1
,并2
在像一些贝壳逆转bash
或zsh
。bash
不允许在调用时使用与特殊内置函数相同的名称定义函数sh
。
归档时间: |
|
查看次数: |
372 次 |
最近记录: |