检查目录的存在并不会在bash中失败

时间:2018-03-06 20:19:39

标签: linux bash shell sh

当我给脚本一个参数时,下面的shell脚本工作正常。 [./test dir_name]

但是,当我没有给出目录名时,脚本不会失败[即不会落入ERROR消息]。在这种情况下脚本没有失败的原因是什么?

#!/bin/sh
echo "directory name is " $1
if [ ! -d $1 ];  
then
  echo "ERROR: directory doesn't exist"
fi

1 个答案:

答案 0 :(得分:3)

由于您没有引用$1并且其扩展为空字符串,因此在扩展进行字拆分后,您的命令将变为[ ! -d ]。您正在测试字符串-d是非空的,它是。

始终引用参数扩展;你知道什么时候做不对的事。

echo "directory name is $1"

if [ ! -d "$1" ]; then