gpt4 book ai didi

bash - 脚本不显示目录中存在的文件名

转载 作者:行者123 更新时间:2023-11-29 09:43:53 27 4
gpt4 key购买 nike

#!/bin/bash
file=/home/yaal/temp/hatch/*;
if [[ -f $file ]]; then
echo $file
else
echo "No files found"
fi

我在 hatch 目录下有文件,但它显示“找不到文件”。这是为什么?

谢谢!!

最佳答案

路径名扩展不会发生在非数组变量赋值的右侧,因此 file 包含文字 *,而不是文件名列表。也不在 [[ ... ]] 内执行路径名扩展,因此您询问/home/yaal/temp/hatch 中是否存在名为 * 的文件`.

如果你只是想知道hatch中是否至少有一个文件(不包括以.开头的文件),试试

for f in /home/yaal/temp/hatch/*; do
if [[ -f $f ]]; then
echo "$file"
else
echo "No files found"
fi
break
done

你也可以填充一个数组,然后检查它是否为空:

files=( /home/yaal/temp/hatch/* )
if (( ${#files[@]} > 0 )); then
echo "${files[0]}" # First file found
else
echo "No files found"
fi

如果您确实想考虑以 . 开头的文件名,请使用 shopt -s dotglob,或使用两种模式 /home/yaal/temp/hatch/*/home/yaal/temp/hatch/.*.

关于bash - 脚本不显示目录中存在的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22644941/

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