gpt4 book ai didi

shell - 检查shell脚本中的子目录中是否存在目录

转载 作者:行者123 更新时间:2023-12-04 16:17:18 25 4
gpt4 key购买 nike

什么命令使用 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 目录中的 world 目录后,仍然“找到”。

最佳答案

这是另一种方式。 ./ 如果是相对于当前目录的目录,/ 如果是完全指定的目录,即:

如果您提供目录的完整路径,则需要删除点:

if [ -d "/full/path/to/smth/$DIRECTORY" ]; then
# found
fi

如果 PATH 目录是相对于您当前的目录,则必须保留点:

if [ -d "./smth/$DIRECTORY" ]; then
# found
fi

如果未设置DIRECTORY 变量,前面的命令将检查smth 中是否有名为PATH 的目录,如果DIRECTORY 变量已设置,只有在 smth 下存在具有该值的子目录时,测试才会成功。

echo $DIRECTORY 会告诉您是否设置了 DIRECTORY 变量。

关于shell - 检查shell脚本中的子目录中是否存在目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39324583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com