执行脚本时如何将参数传递给 shebang 解释器?

执行脚本时如何将参数传递给 shebang 解释器?

说我有my.script诸如

#!/bin/bash

blah
blah

并且 bash 解释器接受一个--verbose参数。

如何执行 my.script 将 --verbose 传递给 bash?

我知道我可以在命令行上执行 bash --verbose my.script ,但我需要能够my.script直接运行。

编辑:

好吧,也许我应该描述一下我的具体例子。我正在使用 grunt.js 构建系统,其 cli 是一个带有 #! 的脚本。到节点。现在,grunt 运行插件,我使用的一个这样的插件需要在节点上启用某个标志。 grunt cli 脚本不会这样做,我也不想更改它。

答案1

您可以添加--verbose到 shebang 行:

#!/bin/bash --verbose

如果您在 Linux 上运行此程序,由于内核处理 shebang 行的方式,您只能以这种方式添加一个参数。在 shell 脚本中,您可以使用set;控制某些 shell 选项。在这种情况下

#!/bin/bash

set -o verbose

blah
blah

(尽管这只会显示该set行之后的命令,而--verbose在 shebang 行中则显示所有命令,包括 shebang。)

答案2

测试.sh:

#!/bin/bash -v
date
:
x=3

运行它会产生:

$ ./test.sh
#!/bin/bash -v
date
Sat Jan 31 21:34:06 VET 2015
:
x=3

答案3

怎么样

node --option `which grunt`

相关内容