tcsh - Command line arguments beginning with dash (-)

14,183

This script snippet worked for me:

set n = 1
echo $argv[$n]
if ( "$argv[$n]" == "-cleanup" ) then
    echo "its cleanup"
endif

When I run tcsh ./test-cleanup.tcsh -cleanup produces the following output:

-cleanup
its cleanup

The problematic piece of code is the following line. When -cleanup was unquoted, it confuses the csh interpreter as a file check.

if ( $* != null ) then

Replace it with this line:

if ( "$*" != "" ) then
Share:
14,183

Related videos on Youtube

user1754045
Author by

user1754045

Updated on June 04, 2022

Comments

  • user1754045
    user1754045 over 1 year

    I need to check the first command line argument to see if it's -cleanup. My code is:

    if ( $* != null ) then
    
    if ( "X$argv[$n]" == "X-cleanup" ) then
        echo "its cleanup"
    

    I first check to make sure there is at least 1 argument. n is set to 1 at the beginning of the program. When I try to run my script with -cleanup as an argument I get this error:

    if: Malformed file inquiry.
    

    I've tried solutions from the few forum posts I found online but I cannot figure out how to correctly handle the dash. It's a tcsh shell.