我正在编写一个 CSH 脚本,我需要检查终端中是否设置了环境变量 XYZ 或 ABC。
如果设置了这些变量,那么我需要检查它们是否设置为 FALSE”。 我正在尝试如下:
if ( !($?ABC) ) then
echo "variable is not set"
else if ( $ABC == "FALSE") then
echo "variable set to false"
endif
但 CSH 首先替换变量。所以我收到以下错误:
ABC:未定义的变量
你能帮我解决这个问题吗?
如果您在脚本内定义变量应该没有问题。
set ABC = FALSE
if ( ! $?ABC ) then
echo "variable is not set"
else if ( $ABC == "FALSE") then
echo "variable set to false"
endif
echo "ABC is still: $ABC"
输出:
variable set to false
ABC is still: FALSE
此外,如果您使用 setenv 在脚本外部定义变量,它将适用于您的脚本
setenv ABC FALSE
./your_script.sh
输出:
variable set to false
ABC is still: FALSE
更好的方法是使用命令行参数。将变量传递给脚本是比 setenv 更好的解决方案。