我正在执行以下命令来存储匹配的文件/目录,但是如果我找不到任何匹配项,那么我会在控制台上收到错误消息
matching_files=`ls -d $log_dir/$pattern`
ls: cannot access /logs/archive_file*: No such file or directory
ls: cannot access /logs/archive_dir*: No such file or directory
我想将这些错误记录在文件中而不是显示在控制台上,如何在 shell 脚本中实现这一点?
答案1
您根本不应该使用ls
。我假设您使用的是 bash。我们将仅使用 shell 通配符将文件存储在数组中:
matching_files=( $log_dir/$pattern )
if [[ "${#matching_files[@]}" -eq 0 ]]; then
echo "no files found"
else
echo "I found these matching files:"
printf "%s\n" "${matching_files[@]}"
fi
for file in "${matching_files[@]}"; do
do_something_with "$file"
done