32

I've got a few csh scripts where I need to check that certain environment variables are set before I start doing stuff, so I do this sort of thing:

if ! $?STATE then echo "Need to set STATE" exit 1 endif if ! $?DEST then echo "Need to set DEST" exit 1 endif 

which is a lot of typing. Is there a more elegant idiom for checking whether or not an environment variable is already set?

Notes:

  • This question is quite similar, but specifically asks about solutions in bash.
  • I'm not looking for people to advise me to stay away from csh because it's cursed, scary, or bash is better. I'm specifically interested in a more elegant solution than what I'm using now.
1
  • This newer, similar question also show how to check in an expression context where if/else/endif is not possible Commented Oct 1, 2015 at 13:42

2 Answers 2

22

I think the way you're doing it (an if statement with a condition using the $?VAR syntax, which evaluates to 1 if the variable is set, and 0 otherwise) is probably the most idiomatic csh construct that does what you want.

Sign up to request clarification or add additional context in comments.

Comments

-7

Try the following:

[ -z STATE ] && echo "Need to set STATE" [ ! -z DEST ] && echo "Need to set STATE" 

2 Comments

It's not clear what you're trying to say here - you have two opposite pieces of logic printing the same message.
In any case this is not csh

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.