寻找是否存在ENV变量

时间:2019-07-19 13:34:35

标签: bash windows-subsystem-for-linux

所以,我想这可能是一个错误,或者我已经搞砸了,我不知道...

我有一个始终可以运行的脚本,但是我受命使用新的WSL2使其运行。我已经摘录了第一段代码,因为它立即给了我一些问题。正如您将在下面看到的那样,我只是在尝试确定是否已设置变量。这在我的Linux VM和Cygwin中都有效,但是在WSL2中不起作用。这是代码:

#!/bin/bash
echo $test_var
set -e

if [ ! -d "$test_var" ]; then
    echo Please set test_var.
    exit
fi

当我在任何工作系统中运行此命令时,我都会得到变量的输出。

在WSL2中,我得到变量的输出,然后是请设置test_var。并且由于设置了-e而停止了脚本,因为应该认为未设置var。

任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您要检查目录是否存在(其名称显然需要在$ test_var中设置为环境变量),则该目录是否存在相对于执行脚本的当前目录 >,您想要类似的东西:

equals

请注意,这里我仅更改了您的消息,并且您的问题可能由以下事实来解释:您在WSL2下没有这样的目录。

另一方面,如果您要检查是否设置了某些环境变量(无论代表什么),则需要#!/bin/bash echo "$test_var" set -e if [ ! -d "$test_var" ]; then echo "cannot find directory $test_var" exit fi 选项,例如:

-z

请注意,您的否定符号(#!/bin/bash echo "$test_var" set -e if [ -z "$test_var" ]; then echo "Please set test_var." exit fi )不存在。