Am Mi, den 18.05.2005 schrieb linux.whiz@xxxxxxxxx um 0:55: > My brain is fried. I know there is a simple answer to this but I'm > drawing a blank. I want to run a script against the contents of a > text file. The text file is just my users' first name, middle initial > and last name like this: > > John A Smith > Mary P James > Sally R Jones > Fred Q Davis > > What I want to do is for each user in this file, run a script. I > tried to do this: > > for i in `cat textfile`; do > myscript.sh $i > done > > I expect this to run like this: > > myscript.sh John A Smith > myscript.sh Mary P James > myscript.sh Sally R Jones > myscript.sh Fred Q Davis > LW Does your "myscript.sh" expect 3 arguments or one single consisting of the full person's name? a) script runs i.e. "John A Smith" as 1 argument: $ cat names.lst | while read line; do ./script.sh "${line}"; done --> 1 argument: john a smith 1 argument: mary p james 1 argument: sally r jones 1 argument: fred q davis b) script runs i.e. "John A Smith" as 3 arguments: $ cat names.lst | while read line; do ./script.sh ${line}; done --> 3 arguments: JOHN A SMITH 3 arguments: MARY P JAMES 3 arguments: SALLY R JONES 3 arguments: FRED Q DAVIS The "script.sh" in my example is: $ cat script.sh #!/bin/bash if [ "$2" != "" ]; then echo "3 arguments: " echo -n $1 | tr [:lower:] [:upper:] echo -n " " echo -n $2 | tr [:lower:] [:upper:] echo -n " " echo $3 | tr [:lower:] [:upper:] else echo "1 argument: " echo $1 | tr [:upper:] [:lower:] fi And names.lst contains: $ cat names.lst John A Smith Mary P James Sally R Jones Fred Q Davis Alexander Dalloz -- Alexander Dalloz | Enger, Germany | GPG http://pgp.mit.edu 0xB366A773 legal statement: http://www.uni-x.org/legal.html Fedora Core 2 GNU/Linux on Athlon with kernel 2.6.11-1.14_FC2smp Serendipity 03:21:36 up 4 days, 2:53, load average: 0.08, 0.11, 0.09
Attachment:
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil