Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!ittc!fpb From: fpb@ittc.wec.com (Frank P. Bresz) Newsgroups: comp.unix.shell Subject: Re: weird csh thing Message-ID: Date: 8 Jan 91 00:11:31 GMT References: Sender: news@ittc.wec.com Organization: Westinghouse, ITTC, Pgh, PA. Lines: 90 In-reply-to: bagchi@eecs.umich.edu's message of 6 Jan 91 05:07:22 GMT Distribution: In article bagchi@eecs.umich.edu (Ranjan Bagchi) writes: >anyone care to explain?? (I`m in csh) >$ set p = "w | tail +3 " >$ echo $p >w | tail +3 >$ $p >Usage: w [ -hlsuw ] [ user ] >$ w | tail +3 >benjo ttyp3 10:13pm 41 4 -sh >benjo ttyp4 10:17pm 3:22 4 -csh >$ exit >$ exit >Process shell finished >shouldn't "$p" have the same effect as "w | tail +3" ? > -rj Well, I'll take a shot at an explanation. By saying: set p = "w | tail +3 " You have effectively escaped the normal behavior of | which is to run a pipe to the next command in line. Thereby passing the | to the 'w' command as the first argument. 'w' does not understand what the '|' symbol means so it spits out it's usage command. This command shows what I mean: ittc% w \| tail +3 Usage: w [ -hlsuw ] [ user ] Had you instead said : eval $p You would have received the 'w' portion only the 'tail' would not execute, (at least it didn't under my csh SunOS4.1, why I don't know). This scenario worked for both bash and sh. $ p="w | tail +3" $ $p Usage: w [ -hlsuw ] [ user ] $ eval $p fpb console 12:44pm 6:15 9:32 9:27 sv_xv_sel_svc young ttyh5 12:40pm 5:54 telnet wssi3 young ttyha 11:29am 6:46 5 5 telnet wssi3 miller ttyhc 2:33pm 3:33 3 -csh fpb ttyp0 12:44pm 28 /emacs/sun4/etc/bash fpb ttyp3 6:26pm 9 1 w mance ttyp9 3:10pm 3:49 - In CSH however I tried and received : ittc% set p = " w | tail +3 " ittc% $p Usage: w [ -hlsuw ] [ user ] ittc% echo $p w | tail +3 ittc% eval $p 7:03pm up 2 days, 12:04, 6 users, load average: 1.60, 2.24, 2.05 User tty login@ idle JCPU PCPU what fpb console 12:44pm 6:19 9:45 9:40 sv_xv_sel_svc young ttyh5 12:40pm 5:58 telnet wssi3 young ttyha 11:29am 6:50 5 5 telnet wssi3 miller ttyhc 2:33pm 3:37 3 -csh fpb ttyp0 12:44pm 32 /emacs/sun4/etc/bash fpb ttyp3 6:26pm 10 1 w mance ttyp9 3:10pm 3:54 - ittc% Clearly the tail failed. Any CSH wizards know why. I received bash about 4 months ago and haven't touched csh since. Out of pure inquisitiveness what is wrong with : alias p "w | tail +3" p -- | () () () | Frank P. Bresz | Westinghouse Electric Corporation | \ /\ / | fpb@ittc.wec.com | ITTC Simulators Department | \/ \/ | uunet!ittc!fpb | Those who can, do. Those who can't, simulate. | ---------- | +1 412 733 6749 | My opinions are mine, WEC don't want 'em.