Missing tasks for conditional and loop structures. Also elaboration on funcitons

pull/1/head^2
vlpr 1 year ago
parent b8b610673c
commit bbc644388c

@ -49,7 +49,7 @@ false ; echo "This will always run"
Ответ в [1-2].
### 2.
Чтобы назначить переменные в bash, используйте синтаксис `foo=bar`. Чтобы получить доступ к значению переменной запишите знак `$` перед её именем `$foo`. Обратите внимание, что `foo = bar` не будет работать, так как интерпретируется как вызов программы `foo` с аргументами `=` и `bar`. Как правило, в сценариях оболочки символ пробела выполняет разделение аргументов. Поначалу такое поведение может сбивать с толку, поэтому всегда проверяйте его.
Чтобы назначить переменные в bash, используйте синтаксис `foo=bar`. Чтобы получить доступ к значению переменной запишите знак `$` перед её именем `$foo`. Обратите внимание, что `foo = bar` не будет работать, так как интерпретируется как вызов программы `foo` с аргументами `=` и `bar`. Как правило, в сценариях оболочки символ пробела выполняет разделение аргументов. Поначалу такое поведение может сбивать с толку, поэтому всегда проверяйте его.
Стандартных правил именования переменных оболочки не существует, но имена, набранные заглавными буквами, обычно указывают на переменные среды или переменные, считываемые из глобальной конфигурации. Чаще всего локальные переменные обозначаются всеми строчными буквами, а их компоненты отделяются друг от друга разделены символами подчеркивания. Имена переменных чувствительны к регистру.
@ -84,6 +84,8 @@ echo_arguments () {
echo "First three arguments: $0 $1 $2 $3, Argument count: $#, All arguments: $@"
}
```
По умолчанию переменная глобальна для скрипта, даже если определена внутри функции. Чтобы сделать переменную локальной, используйте синтаксис `local variable` внутри функции.
Напишите аналогичный предыдущему заданию скрипт, но оберните все действия в функцию, а в конце скрипта выполните эту функцию. Проверьте работу скрипта. Работает ли функция за пределами контекста скрипта?
### 5.
@ -99,6 +101,16 @@ if [[ условное выражение ]]; then
fi
```
## 6.5 Пропущенные задания
https://ryanstutorials.net/bash-scripting-tutorial/bash-if-statements.php
http://mywiki.wooledge.org/BashFAQ/031
https://ryanstutorials.net/bash-scripting-tutorial/bash-loops.php
https://ryanstutorials.net/bash-scripting-tutorial/bash-functions.php
### 7.
Напишите скрипт, который проходит по всем файлам, переданным в качестве аргументов, и ищет в них строку `hello`. Перенаправьте grep `STDOUT` и `STDERR` в специальный файл `/dev/null`. Для каждого файла в `if` создайте файл с содержимым `hello`, если `grep` завершился с ошибкой.
@ -254,11 +266,13 @@ echo "Everything went according to plan"
4. https://www.opennet.ru/docs/RUS/bash_scripting_guide/c301.html
5. https://www.shellcheck.net/
6. http://mywiki.wooledge.org/BashFAQ/105
7. http://mywiki.wooledge.org/BashFAQ/031
## Релевантные мануалы:
- man bash
- source (man bash, SHELL BUILTIN COMMANDS)
- man shellcheck
- man test
## Литература
- Эви Немет и др. — Unix и Linux. Руководство системного администратора. 5-e издание [Глава 7]
Loading…
Cancel
Save