@ -18,7 +18,7 @@ echo "$date: The claim that \"$claim\" is true if and only if $claim."
### 2.
### 2.
Напишите функцию в скрипте, которая создает каталог, путь к которому передан в качестве первого аргумента и переходит в него. Проверьте работу функции в этом же файле. Работает ли функция за пределами контекста скрипта?
Напишите функцию в скрипте, которая создает каталог, путь к которому передан в качестве первого аргумента и переходит в него. Проверьте работу функции в этом же файле. Работает ли функция за пределами контекста скрипта?
```
```bash
$ cat 2.sh
$ cat 2.sh
mkdir_cd () {
mkdir_cd () {
mkdir -p $1
mkdir -p $1
@ -32,7 +32,7 @@ current dir: /tmp/1/2/3/4/5
stud@stud15:~$
stud@stud15:~$
```
```
После выполнения скрипта текущая директория не изменилась.
После выполнения скрипта текущая директория не изменилась.
Попробуйте условные выражения в скрипте в if конструкции:
Попробуйте условные выражения в скрипте в if конструкции:
```
```bash
$ cat 4.sh
$ cat 4.sh
if [[ true && true ]]
if [[ true && true ]]
then
then
@ -81,7 +81,7 @@ True
### 5.
### 5.
Напишите скрипт, который проходит по всем файлам, переданным в качестве аргументов, и ищет в них строку hello. Перенаправьте grep `STDOUT` и `STDERR` в специальный файл `/dev/null`. Для каждого файла в if создайте файл с содержимым `hello`, если `grep` завершился с ошибкой.
Напишите скрипт, который проходит по всем файлам, переданным в качестве аргументов, и ищет в них строку hello. Перенаправьте grep `STDOUT` и `STDERR` в специальный файл `/dev/null`. Для каждого файла в if создайте файл с содержимым `hello`, если `grep` завершился с ошибкой.
Установите пакет shellcheck и проверьте написанный вами ранее скрипт одноименной командой.
Установите пакет shellcheck и проверьте написанный вами ранее скрипт одноименной командой.
```
```bash
$ shellcheck 5.sh
$ shellcheck 5.sh
In 5.sh line 1:
In 5.sh line 1:
@ -146,7 +146,7 @@ For more information:
### 7.
### 7.
Напишите скрипт, который выполняет следующий код:
Напишите скрипт, который выполняет следующий код:
```
```bash
$ cat ./7.sh
$ cat ./7.sh
#!/usr/bin/env python
#!/usr/bin/env python
import sys
import sys
@ -164,7 +164,7 @@ $ ./7.sh 1 2 3 4 5
Функции выполняются в текущей среде оболочке, тогда как скрипты выполняются в своем собственном процессе.
Функции выполняются в текущей среде оболочке, тогда как скрипты выполняются в своем собственном процессе.
Проверьте, что функции могут изменять переменные среды, например, изменить текущий каталог, тогда как скрипт не может. Напишите скрипт, в котором инициализируются две переменные `A` и `B`. Перед одной из них указывается `export `. Выполните скрипт и посмотрите на выдачу команды `env`. Выполните файл командой source (source --help). Какие переменные экспортировались в оболочку?
Проверьте, что функции могут изменять переменные среды, например, изменить текущий каталог, тогда как скрипт не может. Напишите скрипт, в котором инициализируются две переменные `A` и `B`. Перед одной из них указывается `export `. Выполните скрипт и посмотрите на выдачу команды `env`. Выполните файл командой source (source --help). Какие переменные экспортировались в оболочку?
```
```bash
$ cat 8.sh
$ cat 8.sh
#!/bin/bash
#!/bin/bash
A=1
A=1
@ -178,7 +178,7 @@ B=2
### 9.
### 9.
Напишите сценарий bash, который запускает следующий сценарий до тех пор, пока он не завершится аварийно, записывает стандартный вывод и потоки ошибок в файлы и печатает все в конце.
Напишите сценарий bash, который запускает следующий сценарий до тех пор, пока он не завершится аварийно, записывает стандартный вывод и потоки ошибок в файлы и печатает все в конце.
```
```bash
stud@stud15:~$ cat random_bug_script.sh
stud@stud15:~$ cat random_bug_script.sh
#!/usr/bin/env bash
#!/usr/bin/env bash
@ -260,7 +260,7 @@ The error was using magic numbers
```
```
Бонусный балл, за то, что вы можете сообщить, сколько запусков потребовалось для сбоя сценария.
Бонусный балл, за то, что вы можете сообщить, сколько запусков потребовалось для сбоя сценария.
```
```bash
stud@stud15:~$ cat mean.sh
stud@stud15:~$ cat mean.sh
#!/bin/bash
#!/bin/bash
script=$1
script=$1
@ -338,7 +338,7 @@ Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
(if you think this is a mistake, you may want to use -f option)
(if you think this is a mistake, you may want to use -f option)
```
```
```
```bash
root@stud15:~# cat create_user.sh
root@stud15:~# cat create_user.sh
#!/bin/bash
#!/bin/bash
@ -381,7 +381,9 @@ done
root@stud15:~# cat nodes
root@stud15:~# cat nodes
10.160.179.25
10.160.179.25
10.160.179.55
10.160.179.55
```
```
root@stud15:~# ./create_user.sh nodes user6
root@stud15:~# ./create_user.sh nodes user6
Generating public/private ed25519 key pair.
Generating public/private ed25519 key pair.
Your identification has been saved in /root/users.ssh/user6/id_ed25519
Your identification has been saved in /root/users.ssh/user6/id_ed25519