Подавлять сообщения об ошибках оболочки script
В моей оболочке script я получил следующие строки:
rm tempfl.txt
rm tempfl2.txt
Если они не существуют, я получаю сообщения об ошибках:
rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory
Есть ли способ подавить эти сообщения, даже если они не всегда появляются, поскольку файлы могут существовать?
Ответы
Ответ 1
У вас есть два варианта:
Подавить предупреждения rm
$ rm tempfl.txt 2> /dev/null
Перенаправить script на /dev/null
$ ./myscript.sh 2> /dev/null
Последний имеет недостаток в отсутствии всех других предупреждающих сообщений, созданных вашим script.
Ответ 2
Попробуйте выполнить следующую команду:
rm -f tempfl.txt
параметр -f действует следующим образом:
-f, --force ignore nonexistent files, never prompt
Команда также не сообщает ненулевой код ошибки, если файл не существует.
Ответ 3
вы должны перенаправить все сообщения об ошибках на /dev/null, например
rm tempfl2.txt 2> /dev/null
Ответ 4
Добавление к приведенным выше ответам. Вероятно, лучше сохранить сообщения об ошибках (например, разрешено разрешение или некоторые из них). Просто проверьте наличие файла перед его удалением:
[ -f file.txt ] && rm file.txt
Это предполагает оболочку типа Bourne, например bash. Вышеприведенное имеет дополнительную выгоду, что он не будет пытаться удалить каталог, что-то rm
не может сделать.
Ответ 5
Мы можем использовать 2> /dev/null
для подавления выходной ошибки и || true
, чтобы обеспечить статус выхода успеха:
rm foo
=> rm: cannot remove ‘foo’: No such file or directory
rm foo 2> /dev/null
echo $?
=> 1
rm foo 2> /dev/null || true
echo $?
=> 0
Если вы используете команду в оболочке script, makefile и т.д., возможно, вам это нужно.