Skip to content Skip to sidebar Skip to footer

What Does Exec ${perl-perl} -sx $0 ${1+"$@"} Mean In Shell Script?

I'm given a task to convert a shell script which contains Shell script, Perl code to Python. I managed to convert the Perl code to Python. But there is this shell script statement

Solution 1:

${PERL-perl} is a parameter expansion: if the PERL shell variable is unset, use perl, else use the content of PERL. (Arguably, this should be ${PERL:-perl}, because if PERL is set but empty, the empty string will be used.)

${1+"$@"} stands for "if $1 is set, use "$@" (all positional parameters), else substitute null". This is a hack for older shells that get confused by "$@" if there are no positional parameters and expand to a single parameter instead of none at all. Bash would work with just "$@" instead.

For the options to perl, see perldoc perlrun.

Post a Comment for "What Does Exec ${perl-perl} -sx $0 ${1+"$@"} Mean In Shell Script?"