当我给脚本一个参数时,下面的shell脚本工作正常。 [./test dir_name]
但是,当我没有给出目录名时,脚本不会失败[即不会落入ERROR消息]。在这种情况下脚本没有失败的原因是什么?
#!/bin/sh
echo "directory name is " $1
if [ ! -d $1 ];
then
echo "ERROR: directory doesn't exist"
fi
答案 0 :(得分:3)
由于您没有引用$1
并且其扩展为空字符串,因此在扩展进行字拆分后,您的命令将变为[ ! -d ]
。您正在测试字符串-d
是非空的,它是。
始终引用参数扩展;你知道什么时候做不对的事。
echo "directory name is $1"
if [ ! -d "$1" ]; then