运行shell报错:[: !-d: unary operator expected
今日在编写shell测试的时候,使用到了if 的逻辑判断语句,然后在进行判断一个文件(或目录)是否存在的时候,shell无法进行运行,并报错。
报错原因:语法错误
在进行使用shell 的一些逻辑判断是,有些语句必须前后加空格,有些则必须不能加空格,所以,这次我就吃了大亏。
#!/bin/bash
#by author dhy
#test -f -d
DIR="./test"
if [ !-d $DIR ] # 报错位置
then
echo "this dir is not exist!"
mkdir $DIR
else
echo "this dir is exist! exit"
fi
报错位置:if [ !-d $DIR ]
需要在!和-d之间加空格
#!/bin/bash
#by author dhy
#test -f -d
DIR="./test"
if [ ! -d $DIR ] # 需要加空格,注意
then
echo "this dir is not exist!"
mkdir $DIR
else
echo "this dir is exist! exit"
fi
运行成功#!