我正在尝试编写一个 shell 脚本,它检查给定目录是否包含特定命名的子目录。我将父目录作为第一个参数传递,并且仅传递子目录的名称。我希望脚本遍历父级的内容,并查看它是否包含目录类型的文件,该文件以我为子级传递的名称命名。
这是我的代码。在其中,我尝试将ls父级的输出通过管道传输到egrep命令。我正在尝试编写一个正则表达式来检查 的输出是否ls具有与我的孩子姓名相匹配(不相同。只是在其名称中的某个位置)的名称。
PARENT=$1
CHILD=$2
DIRNUM=$(ls -l $PARENT | egrep -c '< $CHILD >')
echo $DIRNUM
Run Code Online (Sandbox Code Playgroud)
不要这样做。不解析ls。
[只需直接使用/test built-in/命令检查文件/目录即可。
path=$parent/$child
if [ -d "$path" ]; then
echo "$path exists."
else
echo "$path does not exist."
fi
Run Code Online (Sandbox Code Playgroud)
您会注意到我切换了变量名称的大小写。ALL_UPPER 变量是“保留”供 shell 使用的,您不应使用任何变量。