#!/bin/bash
file=/home/yaal/temp/hatch/*;
if [[ -f $file ]]; then
echo $file
else
echo "No files found"
fi
我的孵化目录下有文件,但它显示“未找到文件”。这是为什么?
谢谢!!
最佳答案
路径名扩展不会发生在非数组变量赋值的右侧,因此 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/孵化/*/home/yaal/temp/hatch/.*
.
关于bash - 脚本不显示目录中存在的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22644941/