我想检查环境变量MY_DIR或其包含的路径是否不存在。
有人能看出我做错了吗?
#!/bin/bash
# If $MY_DIR or its containing path doesn't exist
if [ ! $(env | grep -q ^MY_DIR=) ] || [ ! -d "$MY_DIR" ]; then
echo "not existing"
# set it
export MY_DIR="$PWD"
fi
答案 0 :(得分:1)
由于空字符串无法命名现有目录,因此如果设置了MY_DIR
,则无需担心;只检查它的(可能不存在)值是否命名目录。
if [[ ! -d $MY_DIR ]]; then
export MY_DIR=$PWD
fi
如果MY_DIR
在环境中,也没有必要具体检查。虽然可能有一个不是环境变量的shell变量,但不可能有一个不是shell变量[0]的环境变量,也不可能有一个shell变量与环境变量同名但具有不同的值(环境变量只是一个设置了export属性的shell变量。)
[0]好的,从技术上讲,您可以继承一个名称不是有效shell标识符的环境变量。让我们忽略那些,不是吗? :)
答案 1 :(得分:0)
我认为可以使用此代码制作:
if [[ ! -d "$MY_DIR" ]]; then
export MY_DIR="$PWD"
fi
或使用单行:
[[ ! -d "$MY_DIR" ]] && export MY_DIR="$PWD" || echo "MY_DIR already set"
上面的代码回应了一条消息,说明什么时候已经设置,如果不需要,你可以试试这个:
[[ ! -d "$MY_DIR" ]] && export MY_DIR="$PWD"