【问题标题】:Pass bash script parameters to sub-process unchanged将 bash 脚本参数传递给子进程不变
【发布时间】:2009-11-08 09:02:49
【问题描述】:

我想编写一个简单的 bash 脚本,作为可执行文件的包装器。如何将脚本接收到的所有参数传递给可执行文件?我试过了

/the/exe $@

但这不适用于带引号的参数,例如。

./myscript "one big parameter"

运行

/the/exe one big parameter

这不是一回事。

【问题讨论】:

    标签: bash scripting parameters


    【解决方案1】:

    当 shell 脚本包裹可执行文件时,如果您不想在可执行文件完成后执行任何操作(根据我的经验,这是包装脚本的常见情况),调用可执行文件的正确方法是:

    exec /the/exe "$@"
    

    exec 内置函数告诉 shell 只将控制权交给可执行文件,而无需分叉。

    实际上,这可以防止无用的 shell 进程在系统中徘徊,直到被包装的进程终止。

    这也意味着exec命令之后不能执行任何命令。

    【讨论】:

      【解决方案2】:

      您必须将$@ 放在引号中:

      /the/exe "$@"
      

      【讨论】:

      • 太好了,谢谢!我认为这会将所有参数放在一组引号中,但它可以正常工作。
      猜你喜欢
      • 1970-01-01
      • 2021-11-18
      • 2012-12-29
      • 1970-01-01
      • 2014-03-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多