为什么这个bash脚本给我一个关于"missing`]'"的错误?

mah*_*esh 0 unix linux bash

我必须检查文件的存在dir1dir2.然后,递归删除它们,否则打印一些消息.这是我的代码:

if [ -d "dir1"] && [-d "dir2"]; then
 echo "directory exists"
 echo "deleting existing files...."
sleep 2
 rm -r dir1
 rn -r dir1
 echo "exisitng files deleted!!"
else   
 echo "directory does not exist"
fi
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误的表达错误.

./check.sh: line 16: [: missing `]'
directory does not exist.
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

fed*_*qui 7

此行未正确写入:

if [ -d "dir1"] && [-d "dir2"]; then
             ^      ^       ^
              missing spaces
Run Code Online (Sandbox Code Playgroud)

应该

if [ -d "dir1" ] && [ -d "dir2" ]; then
Run Code Online (Sandbox Code Playgroud)

然后你有这个:

rn -r dir1
 ^
 rn does not exist
Run Code Online (Sandbox Code Playgroud)

这应该是rmdir2因为...你已经删除dir1:

rm -r dir2
Run Code Online (Sandbox Code Playgroud)