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

windows - Why does Vista not allow creation of shortcuts to "Programs" on a NonAdmin account? Not supposed to install apps from NonAdmin account? -

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

unit testing - How to mock PreferenceManager in Android? -