2010-02-25 19 views
29

我有幾個CSH腳本,我需要檢查開始之前,我做的東西一定的環境變量設置,所以我做這樣的事情:csh成語來檢查環境變量的存在?

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

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

這是很多打字。是否有更優雅的成語來檢查是否已經設置了環境變量?

注:

  • This question頗爲相似,但具體詢問在bash的解決方案。
  • 我不是在尋找人們建議我遠離csh,因爲它被詛咒,嚇人,或bash更好。我特別感興趣的是比我現在使用的更優雅的解決方案。
+0

[本較新的,類似的問題](http://stackoverflow.com/questions/13343392/how-to-check-if-an-environment-variable-is-無論是未設置還是設置爲空白條)也顯示如何檢查if/else/endif不可能的表達式上下文 – cfi 2015-10-01 13:42:56

回答

19

我覺得你這樣做(的if語句使用$?VAR語法0的條件,如果該變量設置其計算結果爲1,否則)的方式可能是最地道的csh結構,做你想要什麼。

-4

嘗試以下方法:

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

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

這裏不清楚你想說什麼 - 你有兩個相反的邏輯塊打印相同的消息。 – 2014-08-28 16:26:10

+1

在任何情況下,這不是csh – supergra 2015-04-03 00:06:59