csh 成语检查环境变量是不是存在?

Posted

技术标签:

【中文标题】csh 成语检查环境变量是不是存在?【英文标题】:csh idioms to check for environment variable existence?csh 成语检查环境变量是否存在? 【发布时间】:2011-01-21 03:19:47 【问题描述】:

我有一些 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 更好。我对比我现在使用的更优雅的解决方案特别感兴趣。

【问题讨论】:

This newer, similar question 还展示了如何在 if/else/endif 不可能的表达式上下文中进行检查 【参考方案1】:

我认为你这样做的方式(if 语句的条件使用 $?VAR 语法,如果设置了变量,则评估为 1,否则为 0)可能是最惯用的 csh做你想做的事。

【讨论】:

【参考方案2】:

尝试以下方法:

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

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

【讨论】:

不清楚你在这里想说什么 - 你有两个相反的逻辑部分打印相同的消息。 无论如何这不是 csh

以上是关于csh 成语检查环境变量是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查环境变量是不是存在并获取其值? [复制]

检查环境变量是不是存在并设置为 True [关闭]

检查环境变量是不是存在的好习惯是啥?

如何为 csh/tcsh 中的一个命令设置环境变量

linux shell脚本中如何引入当前的系统环境变量

如何配置环境变量及检查环境变量是不是配好