Перенаправление вывода только при успешном вызове команды

Out of the box there is no internet connection

Evidentemente, esto no es cierto, dado que demuestra que los paquetes van y vienen de 8.8.8.8.

What am I missing?

Probablemente olvidó iniciar su servidor proxy DNS. Puede elegir entre varios en Puertos/Paquetes. El Handbook recomienda ejecutar sin consolidar, con

local_unbound_enable=yes

en /etc/rc.conf. Es así de simple. El valor predeterminado resolv.confya apunta a las bibliotecas de clientes DNS.

Yo mismo uso una versión mejorada del dnscache de Bernstein.

Lecturas adicionales

6
14.06.2019, 15:59
3 ответа

Вы можете вызвать команду один раз, перенаправить вывод, а затем удалить вывод, если не было различий:

diff a c > output.txt && rm output.txt
8
27.01.2020, 20:20

А как насчет временного файла?

diff a c > /tmp/output.txt
if [ $? != 0 ]; then mv /tmp/output.txt /my/folder/output.txt; else rm -f /tmp/output.txt; fi

замените -fна -i, если вы хотите удалить диалоговое окно подтверждения.

Таким образом, вы запускаете команду только дважды, без временных переменных и без «посредника», будь то эхо, printf или что-то еще.

5
27.01.2020, 20:20

diff— относительно дорогая команда, по крайней мере, если файлы разные. Вычисление минимального набора изменений требует (сравнительно )интенсивной загрузки ЦП. Так что понятно не хотеть делать это дважды.

cmp, однако, является дешевым процессором -. Предполагая, что эти файлы имеют разумный размер (, я сомневаюсь, что вы вызовете diff для файлов с несколькими -гигабайтами ), это почти не повлияет на производительность — и может быть даже быстрее в случае идентичных файлов.

if ! cmp -s a c; then # -s = silent, do not print results to console
    diff a c > output.txt
fi
7
27.01.2020, 20:20

Теги

Похожие вопросы