command line arguments - Storing ksh input array to variable and passing to another script -


i have modify existing ksh script looks @ command-line arguments using 'shift', , empties $@, want pass original arguments second script afterwards.

in mainline case can coping $@ variable , passing second script, can't work quoted command-line arguments.

if have script called 'printer' below:

#!/bin/ksh  input=$@   echo "printing args" until [[ $# -eq 0 ]];do    echo $1    shift done  ./printer2 $input 

and printer2 below:

#!/bin/ksh  echo "printing second args" until [[ $# -eq 0 ]];do    echo $1    shift done 

i output of

./printer first second "third forth" 

to :

printing args first second third forth printing second args first second third forth 

i've tried various combinations of quotes around variables (both in assignment of $input , when passing printer2) can't figure out. can help?

ok think i've found solution after awful lot of trial , error.

assigning $input this:

set -a input "$@" 

and passing this:

./printer2 "${input[@]}" 

produces output i'm after.

the whole first script therefore:

#!/bin/ksh  set -a input "$@"   echo "printing args" until [[ $# -eq 0 ]];do    echo $1    shift done  ./printer2 "${input[@]}" 

and

./printer first second "third fourth" 

outputs:

printing args first second third fourth printing second args first second third fourth 

if wants explain problem other things tried, please do, i'm still interested!


Comments

Popular posts from this blog

c++ - How do I get a multi line tooltip in MFC -

asp.net - In javascript how to find the height and width -

c# - DataTable to EnumerableRowCollection -