【问题标题】:Wrapping shell built-ins包装外壳内置程序
【发布时间】:2020-12-17 06:54:18
【问题描述】:

我想包装内置的 Bash 命令 export 以便它记录正在导出的变量。

在像 JavaScript 这样的语言中,如果我想包装一个内置的,我可以保存对原始对象的引用。因此,例如,我们可以让内置的 alert 将其参数大写:

var originalAlert = alert;
alert = function(s) {
  originalAlert(s.toUpperCase());
}

但由于 Bash 没有这样的引用,我认为不可能用相同的技术包装 export

我错了吗?有什么方法可以像export 这样包装一个内置的bash?

【问题讨论】:

    标签: bash shell metaprogramming


    【解决方案1】:

    您可以使用builtin 命令调用内置函数,即使它已被函数覆盖:

    export() {
        echo "$@"
        builtin export "$@"
    }
    

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多