如何解决Linux If Else语句语法错误



我正在尝试检查病例对照语句中是否已经存在目录。但它在"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"

最新更新