加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

我可以在shebang行中使用perl的交换机和/ bin/env吗?

发布时间:2020-12-15 21:18:48 所属栏目:大数据 来源:网络整理
导读:我想使用env运行perl -w。在命令行中工作正常: $ /bin/env perl -we 'print "Hello,world!n"'Hello,world! 但是它在脚本中的shebang行上不起作用: #!/bin/env perl -wprint "Hello,world!n"; 这是错误: /bin/env: perl -w: No such file or directory
我想使用env运行perl -w。在命令行中工作正常:
$ /bin/env perl -we 'print "Hello,world!n"'
Hello,world!

但是它在脚本中的shebang行上不起作用:

#!/bin/env perl -w
print "Hello,world!n";

这是错误:

/bin/env: perl -w: No such file or directory

显然env不明白我传给perl的-w标志。怎么了?

解决方法

hash-bang不是一个正常的shell命令行,解析和空格处理是不同的 – 这就是你打的。看到:

> http://www.in-ulm.de/~mascheck/various/shebang/
> http://homepages.cwi.nl/~aeb/std/hashexclam-1.html#ss1.3
> http://en.wikipedia.org/wiki/Shebang_(Unix)

基本上很多/大多数unix将所有剩下的文本放在第一个空格之后变成一个参数。

所以:

#!/bin/env perl -w

相当于:

/bin/env "perl -w"

所以您需要以其他方式处理perl解释器的任何选项。即

use warnings;

(如@ Telemachus)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读