Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

tcsh - Command line arguments beginning with dash (-)

Tags:

shell

unix

tcsh

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.

like image 928
user1754045 Avatar asked Nov 22 '25 02:11

user1754045


1 Answers

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
like image 66
Tuxdude Avatar answered Nov 24 '25 21:11

Tuxdude



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!