Hashbang不支持带参数的参数

时间:2012-12-08 20:35:49

标签: shell escaping shebang

  

可能重复:
  how to use multiple arguments with a shebang (i.e. #!)?

如何使#!语句接受带参数的参数?它似乎把它们整合在一起作为一个参数而不是像往常一样在空间上分裂。

采取这个人为的例子:

$ cat /tmp/echo
#!/bin/echo -n
$ /tmp/echo
/tmp/echo$

效果很好,输出文件名,最后没有换行。但是这一个:

$ cat /tmp/echo
#!/bin/echo -n hi
$ /tmp/echo
-n hi /tmp/echo
$

杀死-n arg。

我可以做的一件事就是制作另一个shell脚本,只需用我想要的参数来执行我想要的第一个脚本,但如果我不需要它们,我宁愿不添加额外的依赖。

1 个答案:

答案 0 :(得分:2)

显然没有针对此的POSIX标准,但是许多(可能是大多数)* nix系统只允许您向shabang中调用的程序发送一个参数。因此,使用#!/bin/echo -n hi实际上与运行/bin/echo "-n hi" /path/to/script相同。

有关详细说明,请参阅this SO answer