我的任务是将包含 Shell 脚本、Perl 代码的 shell 脚本转换为 Python。
我设法将 Perl 代码转换为 Python。
但是有这个shell脚本语句我不明白。
#! /usr/bin/sh
exec ${PERL-perl} -Sx $0 ${1+"$@"}
#! /opt/tools/perl5/bin/perl
Some Perl code which I converted to Python
这第二行是什么意思?
我明白$0
将被评估为脚本名称。
我假设${PERL-perl}
将评估机器上安装的任何 Perl 解释器(如果我错了,请纠正我,也请让我知道如何提及 Python 的类似内容)。
有人可以解释一下剩下的参数是什么吗exec
命令做什么?
${PERL-perl}
is a 参数扩展 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02:如果PERL
shell变量未设置,使用perl
,否则使用的内容PERL
。 (按理说,这应该是${PERL:-perl}
, 因为如果PERL
设置但为空,将使用空字符串。)
${1+"$@"}
代表“如果$1
已设置,使用"$@"
(所有位置参数),否则替换 null”。这是对旧 shell 的一种 hack,这些 shell 会被"$@"
如果没有位置参数并扩展为单个参数而不是根本没有。 Bash 只适用于"$@"
反而。
对于选项perl
, see perldoc perlrun https://perldoc.pl/perlrun.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)