From e7c76304a18b65acc7c12945ad3b6e88e897a465 Mon Sep 17 00:00:00 2001 From: vlpr Date: Mon, 16 Oct 2023 13:42:10 +0000 Subject: [PATCH] fix tasks 10 --- module1/10_bash_scripts/tasks.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/module1/10_bash_scripts/tasks.md b/module1/10_bash_scripts/tasks.md index 2e4c0e3..bf28569 100644 --- a/module1/10_bash_scripts/tasks.md +++ b/module1/10_bash_scripts/tasks.md @@ -27,13 +27,6 @@ Следующий синтаксис `<( CMD )` выполнит `CMD`, поместит вывод во временный файл и заменит `<()` именем этого файла. Это полезно, когда команды ожидают, что значения будут переданы через файл, а не `STDIN`. Например, `diff <(ls foo) <(ls bar)` покажет различия между файлами в каталогах foo и bar. - -`*`Что произойдёт в данном случае? -``` -(echo red; echo green 1>&2) | echo blue -``` -Ответ в [1-2]. - ### 1. Кроме результатов в `STDOUT` и ошибок в `STDERR` cценарии возвращают код возврата. Код возврата или статус выхода — это то, как скрипты/команды должны сообщать о том, как прошло выполнение. Значение `0` обычно означает, что все прошло нормально; все, что отличается от `0`, означает, что произошла ошибка. @@ -49,6 +42,12 @@ true ; echo "This will always run" false ; echo "This will always run" ``` +`*`Что произойдёт в данном случае? +``` +(echo red; echo green 1>&2) | echo blue +``` +Ответ в [1-2]. + ### 2. Чтобы назначить переменные в bash, используйте синтаксис `foo=bar`. Чтобы получить доступ к значению переменной запишите знак `$` перед её именем `$foo`. Обратите внимание, что `foo = bar` не будет работать, так как интерпретируется как вызов программы `foo` с аргументами `=` и `bar`. Как правило, в сценариях оболочки символ пробела выполняет разделение аргументов. Поначалу такое поведение может сбивать с толку, поэтому всегда проверяйте его. @@ -242,7 +241,7 @@ echo "Everything went according to plan" - Не стесняйтесь адаптировать код из существующих скриптов для своих нужд. Но не занимайтесь программированием по принципу "копируй, вставляй и молись", если вы не понимаете кода. Потратьте время на то, чтобы разобраться в нем. Это время никогда не бывает потрачено впустую. - В `bash` используйте опцию `-x` для вывода команд на экран перед их выполнением и `-n` для проверки команд на синтаксис без их выполнения. - Помните, что в Python вы находитесь в режиме отладки, если явно не отключите его с помощью аргумента `-0` в командной строке. Перед выводом диагностического вывода можно проверить специальную переменную `__debug__`. -- Сообщения об ошибка должны идти в STDERR, а не STDOUT. +- Сообщения об ошибка должны идти в `STDERR`, а не `STDOUT`. - В сообщениях об ошибка указываете какая функция или операция не выполнилась. - Если произошла ошибка в системном вызове включайте в сообщение об ошибке `perror` строку. - Используйте имена, набранные заглавными буквами, для указания на переменные среды или переменные, считываемые из глобальной конфигурации. В именах локальных переменных используйте строчные буквы, с разделением слов нижним подчёркиванием `_`.