所以,我想这可能是一个错误,或者我已经搞砸了,我不知道...
我有一个始终可以运行的脚本,但是我受命使用新的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。
任何帮助将不胜感激。
谢谢
答案 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
)不存在。