簡體   English   中英

如何檢查環境變量是否未設置或設置為空字符串?

[英]How to check if an environment variable is either unset or set to the empty string?

我不想使用tcsh,但遺憾的是在這種情況下別無選擇。 所以請不要“使用另一個shell”的答案!

我目前正在嘗試檢查環境變量是否已設置,並設置為有用的東西。 所以我想做的是:

if ($?HAPPYVAR && $HAPPYVAR != "") then
    ... blah...
else if ($?SADVAR && $SADVAR != "") then
    ... more blah ...
endif

問題是如果$ HAPPYVAR未設置,它將在表達式的后半部分出錯(因為環境變量替換發生得很早)。 我可以使用嵌套的ifs,但后來我有問題讓我的“其他”正常工作(我必須設置另一個env var來說明“......等等......”是否發生)。

有人做了這個很好,最好的解決方案嗎?

可能有更好的方法,但您可以使用eval來延遲執行:

if ($?HAPPYVAR && {eval 'test ! -z $HAPPYVAR'}) then
    ... blah...
else if ($?SADVAR && {eval 'test ! -z $SADVAR'}) then
    ... more blah ...
endif

這似乎適合您的需求。

如果test不起作用或您,這也將起作用:

if ($?HAPPYVAR && { eval 'if ($HAPPYVAR == "") exit 1' }) then

啊,csh。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM