spo*_*nut 7 csh environment-variables
我不想使用tcsh,但遗憾的是在这种情况下别无选择.所以请不要"使用另一个shell"的答案!
我目前正在尝试检查环境变量是否已设置,并设置为有用的东西.所以我想做的是:
if ($?HAPPYVAR && $HAPPYVAR != "") then
... blah...
else if ($?SADVAR && $SADVAR != "") then
... more blah ...
endif
Run Code Online (Sandbox Code Playgroud)
问题是如果$ HAPPYVAR未设置,它将在表达式的后半部分出错(因为环境变量替换发生得很早).我可以使用嵌套的ifs,但后来我有问题让我的"其他"正常工作(我必须设置另一个env var来说明"......等等......"是否发生).
有人做了这个很好,最好的解决方案吗?
可能有更好的方法,但您可以使用eval来延迟执行:
if ($?HAPPYVAR && {eval 'test ! -z $HAPPYVAR'}) then
... blah...
else if ($?SADVAR && {eval 'test ! -z $SADVAR'}) then
... more blah ...
endif
Run Code Online (Sandbox Code Playgroud)
这似乎适合您的需求.
如果test不起作用或你,这也会起作用:
if ($?HAPPYVAR && { eval 'if ($HAPPYVAR == "") exit 1' }) then
Run Code Online (Sandbox Code Playgroud)
啊,csh.
| 归档时间: |
|
| 查看次数: |
15205 次 |
| 最近记录: |