Подтвердить что ты не робот

Подавлять сообщения об ошибках оболочки script

В моей оболочке script я получил следующие строки:

rm tempfl.txt
rm tempfl2.txt

Если они не существуют, я получаю сообщения об ошибках:

rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory

Есть ли способ подавить эти сообщения, даже если они не всегда появляются, поскольку файлы могут существовать?

4b9b3361

Ответ 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 и т.д., возможно, вам это нужно.