*BSD News Article 42050


Return to BSD News archive

Xref: sserve comp.unix.shell:20398 comp.unix.bsd:16045
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!newshost.marcam.com!news.mathworks.com!panix!acinader.dialup.access.net!user
From: acinader@panix.com (Arthur Cinader)
Newsgroups: comp.unix.shell,comp.unix.question,comp.unix.bsd
Subject: csh script - unexpected results? (BSDI)
Followup-To: comp.unix.shell
Date: Sat, 04 Feb 1995 12:36:19 -0500
Organization: Working on it
Lines: 67
Distribution: world
Message-ID: <acinader-0402951236190001@acinader.dialup.access.net>
Reply-To: acinader@panix.com
NNTP-Posting-Host: 198.7.7.80
Keywords: BSDI csh
X-Newsreader: Value-Added NewsWatcher 2.0b22.0+

Below is a simple script to illustrate simple error handeling.  Problem
is, I'm not getting the expected results.  Why?
(I'm running BSDI 1.1, I don't know if there is a way to qualify my
version of csh)

The example comes from the "Unix C shell guide," Anderson & Anderson, p.42.

The script is called ~/bin/ppd with the execute permission set.
Numbered lines for clarity.

1  # csh to prepend standard input to file argument
2  # Version 2
3  
4  if ($#argv !=1) then                 # check for number of args
5     echo "Usage: ppd  output_file"
6     exit 1                            # exit on error
7  endif
8
9  set tf = /tmp/ppd.$$                 # name temp file
10 set dest = $argv[1]                  # get argument name
11
12 if (-w $dest) then                   # make sure it's writeable
13    cat - $dest > $tf                 # concatenate tf with target
14    mv $tf $dest                      # replace original file
15    exit 0                            # exit with good status
16 endif
17
18 if (-e $dest) then                   # does it exist
19    echo "ppd: $dest not writable. "
20 else
21    echo "ppd: $dest does not exist."
22 endif    
23 exit 1                               # exit on error

Below is input with resulting output versus expected output.

   %(date; du ~) | ppd
   if: Expression Syntax.

      Vs.

   %(date; du ~) | ppd
   Usage: ppd output_file


   %ppd memo < header         
   if: expression syntax

      Vs.

   %ppd memo < header
   ppd: memo does not exist


   %ppd /etc/passwd < header
   if: expression syntax

      Vs.
   
   %ppd /etc/passwd < header
   ppd: /etc/password not writeable.

Any ideas?
[followup set to comp.unix.shells]

Arthur
acinader@panix.com