使用[时,在Bash的IF-ELSE条件下找不到命令! -d“$ DIR”]

时间:2013-08-08 06:54:52

标签: linux bash unix directory

我有这样的代码

#!/bin/bash 
DIR="test_dir/";
if [! -d "$DIR"]; then
    # If it doesn't create it
    mkdir $DIR
fi

但为什么执行它给了我这个:

./mycode.sh: line 16: [!: command not found

这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:20)

在[和!]之间添加空格。之前也是如此。

#!/bin/bash 
DIR="test_dir/";
if [ ! -d "$DIR" ]; then
    # If it doesn't create it
    mkdir $DIR
fi

引用变量也是个好主意:

    mkdir "$DIR"

答案 1 :(得分:8)

添加一些空格:

if [ ! -d "$DIR" ]; then
#   ^           ^

答案 2 :(得分:1)

您也可以尝试简单地说:

test -d "${dir}" || mkdir "${dir}"

如果目录不存在,这将创建目录。