mckenney@talos.UUCP ( APL Consultant) (10/23/88)
The following is a repost (but only for some of you). The original article specified 'regional' distribution, which was apprently extremely limited. Too limited, I assume, since not only did I not receive any suggestions, I didn't even get any insulting messages (;-)! Frank McKenney ----------------------------------------------------------------- I have been attempting to write a csh script which, among other things, submits a file to be printed via the 'lpr' command. I have run into a brick wall on trying to handle the case of myscript -J "Sample Title" file and being able to pass the quoted string to 'lpr'. The usual error looks like the following: lpr: cannot access Title" Somewhere along the line, the quoted string is getting split up. I've been through the local (Ultrix) manuals, the 'man' pages, and Anderson and Anderson's C Shell Field Guide, and I have received advice and suggestions from a number of local experts, but to no avail. Even though my asbestos underwear is currently at the cleaners, I'm willing to suffer a number of slings and arrows, as well as the possibility of being pointed out as a total illiterate, in order to get a solution. Frank McKenney (who else would WANT my opinions?) ---- script a ------------ #!/bin/csh # set lprargs = "" set file = "" #--- Shift through command line parameters, one by one. while ( $#argv != 0 ) switch( $argv[1] ) # case -[1-4izCJPT#]: # handle args of the form: -x value set lprargs = ($lprargs $argv[1] \"$argv[2]:q\") shift # (extra shift) breaksw case -*: # handle args of the form: -xvalue set lprargs = ($lprargs $argv[1]) breaksw default: # no leading dash: file name set file = ($file $argv[1]) breaksw endsw shift # advance to next argument end # while $#argv # Show arguments echo "lprargs=[$#lprargs]={$lprargs}" b "$file" "$lprargs:q" echo lpr "$lprargs" $file # dummy version for testing - just feeds input file to pipe cat $file | lpr $lprargs # ---- script b - show what lpr is getting -- #!/bin/csh echo "Parameters: $#argv" foreach p ($argv) echo "{$p} " end # ---- sample run -- cyclops:3> a -J "Another Title" x lprargs=[2]={-J "Another Title"} Parameters: 2 <-- (odd, since {x} foreach finds four!) {-J} {"Another} {Title"} lpr -J "Another Title" x x: No such file or directory lpr: cannot access Title" <--- Broken quoted string. cyclops:4> -------------------------------------------------------- Frank McKenney, President | {uunet,rti}!talos!mckenney McKenney Associates | 3464 Northview Place | guest account - access Richmond, Virginia 23225 | provided as a courtesy by USA (804) 320-4887 | Philip Morris USA ---------------------------------------------------------