bash - 它是一种在 bash 中禁用功能并强制执行内置函数的方法吗
问题描述
我正在为test
内置函数编写一个包装函数,假设在每次测试后打印出返回值:
# function test() { test $*; echo $?; }
当然,当我运行它时,它会递归运行,每次test
到达时都会调用自己,因为在函数列表之后会检查内置列表。这是一种将搜索限制为内置的方法吗?例如在它前面加上一些魔术字符串?
解决方案
是的,有恰当命名的魔术字符串,builtin
并且command
:
$ function test() { command test $*; echo $?; } # Looks for test in PATH.
$ test foo
0
$ test 1 -gt 2
1
$ function test() { builtin test $*; echo $?; } # Uses builtin.
$ test 1 -gt 0
0
该command
方式的优点是它是POSIX,而builtin
不是。
推荐阅读
- php - Laravel 5.7 - 使用 morphMany 关系和自定义属性获取器的渴望加载
- reactjs - 反应钩子渲染额外的时间
- python - 张量流移位图像和插值
- javascript - intersectionObserver - I would my slide stop to move when an option box reaches one of boundary-side of the container
- python - 检查 python 代码是否在 Linux 中作为后台任务运行
- excel - 在excel中通过公式绘制不同的形状
- ruby-on-rails - 创建带有脚手架的项目在创建后不显示属性 - Rails/Devise
- r - 为什么 NaN!=NaN 在 R 中返回 NA 而不是 TRUE
- swift - Xcode Firebase | 无法将类型“AuthDataResult”的值转换为预期的参数类型“用户”
- mysql - 将列名作为参数传递给 mySQL 中的存储过程