http://www.perlmonks.org?node_id=811952


in reply to Passing values from Perl script to shell script

The following works for me. Perl code:

#!/usr/bin/perl -w use strict; use warnings; use POSIX ":sys_wait_h"; my $var1 = 3; my $var2 = 5; system ("./perl651.sh", $var1, $var2); my $status = $?; if ($status == -1) { print "failed to execute: $!\n"; } elsif (WIFEXITED($status)) { print "exited with return code ".WEXITSTATUS($status)."\n"; } elsif (WIFSIGNALED($status)) { print "terminated by signal ".WTERMSIG($status)."\n"; } else { print "other status $status\n"; }

Shell code (filename = perl651.sh)

#!/bin/sh if [ $# -ne 2 ] then echo "Expecting 2 arguments, only $# provided" exit 1 fi # return code is sum of two arguments RC=`expr $1 + $2` echo "Sum of $1 + $2 is $RC" exit $RC;

Results:

Sum of 3 + 5 is 8 exited with return code 8