ano*_*nol 9 bash shell command-line
我定义了一个 shell 函数(我们称之为clock),我想将它用作另一个命令的包装器,类似于time函数,例如clock ls -R.
我的 shell 函数执行一些任务,然后以exec "$@".
我希望这个函数即使使用 shell 内置函数也能工作,例如clock time ls -R应该输出内置函数的结果time,而不是/usr/bin/time可执行文件。但exec最终总是运行命令。
如何让我的 Bash 函数作为一个也接受 shell 内置函数作为参数的包装器工作?
编辑:我刚刚了解到它time不是内置的 Bash,而是与管道相关的特殊保留字。我仍然对内置解决方案感兴趣,即使它不适用于time,但更通用的解决方案会更好。
您定义了一个 bash 函数。因此,在调用该函数时,您已经处于 bash shell 中。因此,该函数可以简单地如下所示:
clock(){
echo "do something"
$@
}
Run Code Online (Sandbox Code Playgroud)
可以使用 bash 内置函数、特殊保留字、命令、其他定义的函数调用该函数:
别名:
$ clock type ls
do something
ls is aliased to `ls --color=auto'
Run Code Online (Sandbox Code Playgroud)
内置 bash:
$ clock type type
do something
type is a shell builtin
Run Code Online (Sandbox Code Playgroud)
另一个功能:
$ clock clock
do something
do something
Run Code Online (Sandbox Code Playgroud)
一个可执行文件:
$ clock date
do something
Tue Apr 21 14:11:59 CEST 2015
Run Code Online (Sandbox Code Playgroud)