[英]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.