我正在尝试检查病例对照语句中是否已经存在目录。但它在"then'语句中给出了一个错误。
case $choice in
1)echo "Enter directory name: "
read dname
mkdir $dname
if[-d "$dname"]
then
echo "$dname directory already exists."
else
echo "$dname directory successfully created."
fi
read
;;
错误消息:
uan.sh: line 13: syntax error near unexpected token `then'
uan.sh: line 13: ` then'
解析器在if
语句之外看到then
,因为命令位置没有关键字if
。您有一个单词if[-d
,解析器接受它作为一个普通的命令名;解析器不知道或不关心命令是否真的存在。
空白很重要:
if [ -d "$dname" ]
括号本应提醒您注意语法,但可能造成了比以往更多的麻烦。[
是命令,它需要]
作为它的最终参数。使用名称test
要简单得多,并且不会让您误以为括号对解析器来说有些特殊:
if test -d "$dname"