我写一个CSH脚本,我需要检查是否环境变量XYZ或ABC设置或不设置在终端。
如果设置了这些变量,那么我需要检查它们中是否有任何一个被设置为“”。我尝试如下:
if ( !($?ABC) ) then
echo "variable is not set"
else if ( $ABC == "FALSE") then
echo "variable set to false"
endif
但是CSH首先替换了变量。所以我得到下面的错误:
ABC:未定义的变量
你能帮我解决这个问题吗?
3条答案
按热度按时间f0ofjuux1#
$?ABC
在未设置时计算为0,在设置时计算为1u7up0aaq2#
这个答案:https://stackoverflow.com/a/22640299/7332147
说“嵌套的if是为了避免破坏脚本,因为tcsh显然不会短路”。
它的例子(假设有效)是:
和你的略有不同
可能,解决这个问题的简单方法是使用单个IF来测试ABC,如果没有设置,则将其设置为某个无效值:
(just我的两分钱,我不是CSH的大师)。
avkwfej43#
如果你在脚本中定义变量,应该没有问题。
产出:
同样,如果你使用setenv在脚本外部定义了一个变量,它将与你的脚本一起工作。
产出:
更好的方法是使用命令行参数。传递变量到你的脚本是一个比setenv更好的解决方案。