Я выполняю приведенную ниже команду для хранения соответствующих файлов / каталогов, однако, если я не нахожу совпадений, то я получаю сообщения об ошибках на консоли

 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

Я хочу записать эти ошибки в файл вместо отображения на консоли. Как добиться этого в сценарии оболочки?

1 ответ1

0

Вы не должны использовать ls вообще. Я полагаю, вы используете Bash. Мы просто будем использовать символы оболочки оболочки для хранения файлов в массиве:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .