简单的 Bash If 语句

abe*_*nky 0 bash

我正在尝试为目录编写一个简单的测试,但一直遇到一个我无法解决的问题。

 prompt> if [ -d "./mydir" ] then echo "yes"; fi
 -bash: syntax error near unexpected token 'fi'
Run Code Online (Sandbox Code Playgroud)

我尝试了各种引号、分号、换行符等。
但总是遇到这种语法错误。

你能解释一下我在这里做错了什么吗?

gle*_*man 5

您需要一个分号来分隔条件命令和then关键字:

if [ -d dir ]; then echo yes; else echo no; fi
# ...........^
Run Code Online (Sandbox Code Playgroud)

您当然可以使用换行符代替分号

或者,使用条件运算符

[ -d dir ] && echo yes
Run Code Online (Sandbox Code Playgroud)