在Perl脚本中“不在某些shell下运行”是什么意思?
发布时间:2020-12-15 21:46:48 所属栏目:大数据 来源:网络整理
导读:在许多perl脚本中(特别是在着名的CPAN发行版中),我找到了以下代码: eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}'if 0; # not running under some shell 我想知道它是为了什么? 谢谢. 解决方法 有些系统在脚本开头没有识别#!/usr/bin/perl行,因此尝试在
在许多perl脚本中(特别是在着名的CPAN发行版中),我找到了以下代码:
eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}' if 0; # not running under some shell 我想知道它是为了什么? 谢谢. 解决方法
有些系统在脚本开头没有识别#!/usr/bin/perl行,因此尝试在这样的系统上按名称调用Perl程序只会将脚本传递给shell.为了解决这个问题,可移植的Perl程序以一行开头,当由标准POSIX shell解释时,会导致脚本传递给perl(1). if 0导致在Perl本身运行时忽略该行,并将它放在一个单独的行上会导致shell将其视为一个单独的命令,只运行eval’exec /usr/bin/perl -w -S $0 $阅读后立即{1“$@”}}.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |