On Tue, 13 Apr 2004, Christopher Spears wrote: > --- Igor Pechtchanski <[EMAIL PROTECTED]> wrote: ^^^^^^^^^^^^^^^^^^^ <http://cygwin.com/acronyms/#PCYMTNQREAIYR>
> > On Tue, 13 Apr 2004, Christopher Spears wrote: > > > > > I created the following script: > > > > > > #!/bin/tcsh > > > > > > #csh script to prepend standard input to file argument > > > #Version 1 > > > > > > #name temp file > > > set tf = /tmp/ppd.$$ > > > > > > #get argument name > > > set dest = $argv[1] > > > > > > #copy standard input, $dest to $tf > > > cat - $dest > $tf > > > > > > #replace original file > > > mv $tf $dest > > > > > > However, when I run the script in the tcsh with the > > > following command line: > > > (date; du ~) | ./ppd.txt ~/disk_storage& > > > > > > I get a syntax error (set: Syntax Error). > > > > > > I posted this script on an online Linux forum. A > > > member copied it into vi, and it worked fine. Is > > > there something in Cygwin that I need to do? I have > > > written #!/bin/tcsh at the top, and I haved used set > > > before in tcsh. > > > > Nope. WFM in Cygwin 1.5.9, tcsh 6.12.00, Win2k. This could be caused > > by the presence of a control character in your script (e.g., if you > > edited it in MS Word). Try changing the first line to "#!/bin/tcsh > > -x" to see exactly which commands are invoked. Pipe stderr through > > "cat -A" to see any special characters. > > Igor > > I changed the first line to "!/bin/tcsh -x", and then tried to run the > script again. Here are the results: > > set tf = /tmp/ppd.1316 > set dest = /home/Christopher Spears/disk_storage > set: Syntax error > > So it seems the first two lines work...Right? Nope. The lines are printed *before* they're executed. Your problem is missing quotes. This is a common pitfall in Cygwin, as spaces in filenames are much more common in Windows than in Unix (although a space is a valid filename character in any Unix implementation). Change lines 10, 13, and 16 of your script to 10 set dest = "$argv[1]" 13 cat - "$dest" > "$tf" 16 mv "$tf" "$dest" respectively, and your script should work. You should really quote accesses to any variable that may potentially contain whitespace. > What is stderr? stderr is a common abbreviation of the "standard error" output stream, usually associated with file descriptor 2 (called "diagnostic output" in tcsh-speak). See "man bash" (search for "REDIRECTION") or "man tcsh" (search for "Input\/output$"). Igor -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ [EMAIL PROTECTED] ZZZzz /,`.-'`' -. ;-;;,_ [EMAIL PROTECTED] |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D. '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! "I have since come to realize that being between your mentor and his route to the bathroom is a major career booster." -- Patrick Naughton -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/