![]() |
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Passing parameter from one file to shell script | Amit.Sagpariya | Shell Programming and Scripting | 7 | 10-29-2008 08:08 AM |
| Passing arguments to a shell script from file while scheduling in cron | weblogicsupport | SUN Solaris | 4 | 01-27-2008 11:16 PM |
| Need help passing variables in shell script to perl one-liner | Xek | Shell Programming and Scripting | 1 | 01-15-2008 03:12 PM |
| Passing value from shell script to .pls file | dreams5617 | Shell Programming and Scripting | 4 | 11-30-2004 07:16 PM |
| shell script signal handler | jalburger | Shell Programming and Scripting | 2 | 12-04-2002 05:10 PM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Passing a file handler and an array from Perl to Shell Script
Hi there,
I am trying to call a shell script from a Perl script. here is the code: @args = ("sh", "someshellprg.sh", "a file handler", "an array"); system(@args) == 0 or die "system @args failed: $?"; in the shell program, I examine if the arguments exits using: if [ $# -ne 2 ] then echo "missing input" exit 1 fi the script returns "missing input", any ideas? Thanks in advance. |
|
||||
|
try something like this Code:
$result = `sh -c someshellprg.sh a file handler @arr`; The 'a file handler part' makes no sense to me. You can pass the name of a (perl or shell) script, but other than that I don't get what you are trying to do. |
|
||||
|
test.pl Code:
#!/usr/bin/perl -w
use strict;
my @array = (1, 2, 3, 4, 5, 6, 9);
my $filename = "/path/to/myfilename";
my @args = ( "myshell.sh", "$filename", "@array");
system(@args) == 0 || die;
myshell.sh Code:
echo "the filename is $1 \c"
set -A array $2
echo "the array = ${array[*]}"
Code:
/home/jmcnama> test.pl the filename is /path/to/myfilename the array = 1 2 3 4 5 6 9 |
|
||||
|
It didn't work unfortunately. The array was not past over to the shell script.
I'm changing methods. The perl script calls the shell script without parameters now. It writes to a file, and the shell script reads from it. The problem now is that only one line can be read even though there are more than one line in the file, or nothing can be read. I have tried a few different ways to do it, one of them follows (it didn't read at all). I have created a file with a few lines in, and the script works fine, but it won't read more than one line if the file was generated by the perl script. Thanks! #!/bin/bash FILE="/home/.../somefile" textArray[0]="" # hold text c=0 # counter # read whole file in loop while read line do textArray[$c]=$line # store line c=$(expr $c + 1) # increase counter by 1 done < $FILE # get length of array len=$(expr $c - 1 ) # use for loop to reverse the array for (( i=0;i<$len; i++)); do echo "make is work: ${textArray[$i]}" done Last edited by pinkgladiator; 11-17-2008 at 10:44 PM.. |
|
||||
|
Strange! I used the following script to see how many lines of code I have, and it says 1, but I have two lines of code.
a=0 while read line do a=$(($a+1)); echo $a; done < "/home/.../emailFile.txt" echo "Final line count is: $a"; |
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|