检查shell脚本的子目录中是否存在目录
什么命令使用shell脚本检查另一个路径中是否存在目录 我对此进行了搜索,但我能找到的只是检查“当前”目录中是否存在一个目录检查shell脚本的子目录中是否存在目录,shell,unix,directory,Shell,Unix,Directory,什么命令使用shell脚本检查另一个路径中是否存在目录 我对此进行了搜索,但我能找到的只是检查“当前”目录中是否存在一个目录 if [ -d "$DIRECTORY" ]; then # found "any" directory fi if [ -d "./PATH/$DIRECTORY" ]; then # found "any" directory in subdirectory fi 当我想知道另一个目录中是否存在“any”目录时,这并不满足 if [ -d "$DIRECT
if [ -d "$DIRECTORY" ]; then
# found "any" directory
fi
if [ -d "./PATH/$DIRECTORY" ]; then
# found "any" directory in subdirectory
fi
当我想知道另一个目录中是否存在“any”目录时,这并不满足
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
drwxrwxr-x 2 (myname) (myname) 4096 Sep 5 14:39 ./smth/world/
DIRECTORY=
found
在当前目录中,我有一个名为“smth”的目录。在“smth”中,我创建了一个虚拟目录“world”
编辑#2
在路径前面添加点后,我得到以下结果:
#!/bin/bash
ls -ld ./smth/world/
echo DIRECTORY=$DIRECTORY
if [ -d "./smth/$DIRECTORY/" ]; then
echo hi
else
echo nope
fi
drwxrwxr-x 2 (myname) (myname) 4096 Sep 5 14:39 ./smth/world/
DIRECTORY=
found
但是在我删除了smth目录中的world目录之后,仍然会得到“found”。这是另一种方式
/
如果是相对于当前目录的目录,/
如果是完全指定的目录,即:
如果提供目录的完整路径,则需要删除点:
if [ -d "/full/path/to/smth/$DIRECTORY" ]; then
# found
fi
如果路径
目录与当前目录相对,则必须保留点:
if [ -d "./smth/$DIRECTORY" ]; then
# found
fi
如果目录
变量未设置,先前的命令将检查smth
变量中是否有名为PATH
的目录,如果设置了目录
变量,则只有在smth
下有一个子目录具有该值时,测试才会成功
echo$DIRECTORY
将告诉您是否设置了DIRECTORY
变量。哇,我不敢相信我在将近30分钟后没有尝试过。我的排名还不够高,无法投票,但非常感谢您!隐马尔可夫模型。。。我不知道为什么,但这总是给我错误的印象。我在“路径”中创建了一个目录,然后编写了简单的代码“echo hi”,但没有打印任何内容。请编辑您的问题,并添加您运行的精确命令及其输出。已经完成了。这里真的没有什么可看的,但这就是我使用的代码。欢迎使用堆栈溢出。请注意,在这里说“谢谢”的首选方式是投票选出好的问题和有用的答案(一旦你有足够的声誉这么做),并接受对你提出的任何问题最有用的答案(这也会给你的声誉带来一点提升)。请看这一页,还有你的问题不清楚。假设变量目录
包含单词world。表达式“[-d”/smth/$DIRECTORY”]`或者[[-d/smth/$DIRECTORY]]
都测试目录/smth/world
(绝对路径)是否存在。如果您的测试没有显示所需的结果,我建议您(仅出于测试目的)在If
语句之前执行ls-ld/smth/world
和echo DIRECTORY=$DIRECTORY
。如果你的目标是测试不同的东西,请重新表述你的问题。我根据你告诉我的内容编辑了我的问题,结果如下