|
|
|
|
||||||
| comp.unix.shell Using and programming the Unix shell. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
On 2008-03-25, worldcyclist@gmail.com wrote:
> Hello everyone! > I am using a bash shell script that accepts command line parms. > For example call it "cars.sh" and it accepts a car name through $1 > Later in the script I need to have this script to call another script > to return > multiple parms. In fact it's a perl script (used for it's hashing > abilities) that if you were to call it would give you this.... > > ./return_car_values.pl Jeep > Wrangler Green 1995 > > The question is, how would I then parse "Wrangler", "Green" and "1995" > into arguments by the calling program.. > > Example program is below... > ------------------------------------------------------- > #!/bin/bash > CARS=$1 > ... > ... > `./return_car_values.pl $1` > ------------------------------------------------------ > > I guess my question is how do I accomplish this.... > ($MODEL, $COLOR, $YEAR) = `./return_car_values $1` set -f set -- `./return_car_values.pl $1` MODEL=$1 COLOR=$2 YEAR=$3 -- Chris F.A. Johnson, author <http://cfaj.freeshell.org/shell/> Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress) ===== My code in this post, if any, assumes the POSIX locale ===== and is released under the GNU General Public Licence |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Hello everyone!
I am using a bash shell script that accepts command line parms. For example call it "cars.sh" and it accepts a car name through $1 Later in the script I need to have this script to call another script to return multiple parms. In fact it's a perl script (used for it's hashing abilities) that if you were to call it would give you this.... ../return_car_values.pl Jeep Wrangler Green 1995 The question is, how would I then parse "Wrangler", "Green" and "1995" into arguments by the calling program.. Example program is below... ------------------------------------------------------- #!/bin/bash CARS=$1 .... .... `./return_car_values.pl $1` ------------------------------------------------------ I guess my question is how do I accomplish this.... ($MODEL, $COLOR, $YEAR) = `./return_car_values $1` Many thanks! JC |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
worldcyclist@gmail.com wrote:
> I guess my question is how do I accomplish this.... > ($MODEL, $COLOR, $YEAR) = `./return_car_values $1` I don't think you can do that directly with sh, however you can have those values assigned as positional parameters, eg (assuming return_car_values.pl returns "model1 red 2005") ret=`return_car_values.pl` eval set -- "$ret" # now $1, $2 and $3 are set to "model1", "red" and "2005" respectively -- All the commands are tested with bash and GNU tools, so they may use nonstandard features. I try to mention when something is nonstandard (if I'm aware of that), but I may miss something. Corrections are welcome. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
A very public thanks to Chris for this fix and the heads up on the
book! Also thanks to pk, I didn't try your fix but Chris' worked right off the bat. Really, it's great there are folks like you that out the clueless like myself. JC On Mar 25, 3:40 pm, pk <p...@pk.invalid> wrote: > worldcycl...@gmail.com wrote: > > I guess my question is how do I accomplish this.... > > ($MODEL, $COLOR, $YEAR) = `./return_car_values $1` > > I don't think you can do that directly with sh, however you can have those > values assigned as positional parameters, eg (assuming return_car_values.pl > returns "model1 red 2005") > > ret=`return_car_values.pl` > > eval set -- "$ret" > > # now $1, $2 and $3 are set to "model1", "red" and "2005" respectively > > -- > All the commands are tested with bash and GNU tools, so they may use > nonstandard features. I try to mention when something is nonstandard (if > I'm aware of that), but I may miss something. Corrections are welcome. |
|
![]() |
| Outils de la discussion | |
|
|