如何在 shell 脚本中将错误消息重定向到日志文件

如何在 shell 脚本中将错误消息重定向到日志文件

我正在执行以下命令来存储匹配的文件/目录,但是如果我找不到任何匹配项,那么我会在控制台上收到错误消息

 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

相关内容