什么命令使用shell脚本检查另一个路径中是否存在目录?
我搜索了这个,但我找到的只是检查目录中是否存在"当前" 。目录
if [ -d "$DIRECTORY" ]; then
# found "any" directory
fi
当我想知道是否"任何"时,这并不令人满意。目录存在于另一个目录中。
if [ -d "./PATH/$DIRECTORY" ]; then
# found "any" directory in subdirectory
fi
显然这不起作用。这仍然从当前工作目录检查,而不是我给出的路径。
有什么建议吗?
我想在if条件下使用它,所以回答保持该形式会有所帮助。
修改
在shell脚本中我添加如下:
#!/bin/bash
ls -ld ./smth/world/
echo DIRECTORY=$DIRECTORY
if [ -d "./smth/$DIRECTORY/" ]; then
echo hi
else
echo nope
fi
在当前目录中,我有一个名为" smth"的目录。在里面" smth"我创建了一个虚拟目录" world"
编辑#2
在路径前添加点后,我得到以下内容:
drwxrwxr-x 2 (myname) (myname) 4096 Sep 5 14:39 ./smth/world/
DIRECTORY=
found
但是当我删除smth目录中的世界目录后,仍然得到"找到"。
答案 0 :(得分:4)
那是另一种方式。 movsd
如果是相对于当前目录的目录,./
如果是完全指定的目录,例如:
如果提供目录的完整路径,则需要删除点:
/
如果if [ -d "/full/path/to/smth/$DIRECTORY" ]; then
# found
fi
目录与当前目录相关,则必须保留点:
PATH
如果未设置if [ -d "./smth/$DIRECTORY" ]; then
# found
fi
变量,前面的命令将检查DIRECTORY
中是否存在名为PATH
的目录,如果设置了smth
变量,只有在DIRECTORY
下有一个具有该值的子目录时,测试才会成功。
smth
会告诉您是否设置了echo $DIRECTORY
变量。