views:

18

answers:

2

I am writing a csh shell script, run where the user is expected to pass a path into it as the $1 variable. How can I determine if $1 is missing and define a default value instead for it?

+1  A: 

You can do something like:

if [ $# -eq 0 ];then
        dir='default' # argument not passed use default.
else
        dir=$1        # argument passed..use it.
fi

# use $dir 
ls $dir
codaddict
That's Bourne and family. The question is tagged `[csh]`.
Dennis Williamson
A: 

This is know to work on tcsh version 6.15.00

#! /bin/csh

if( $#argv == 0 ) then
        set filename="(default file)"
else
    set filename=$argv[1]
endif

echo "The file is $filename."

NOTE
There is no standard with csh as there is with the POSIX shell; but at least basic if-then-else and $#argv should be portable.

See Also
POSIX and Korn Shell Versus Other Shells
Csh Programming Considered Harmful
Bash

Frayser