Added tasks for bash scripts lesson.

pull/1/head
Vladimir Protsenko 2 years ago
parent a8750b60ee
commit e240d73289

@ -18,7 +18,7 @@ echo "$date: The claim that \"$claim\" is true if and only if $claim."
### 2.
Напишите функцию в скрипте, которая создает каталог, путь к которому передан в качестве первого аргумента и переходит в него. Проверьте работу функции в этом же файле. Работает ли функция за пределами контекста скрипта?
```
```bash
$ cat 2.sh
mkdir_cd () {
mkdir -p $1
@ -32,7 +32,7 @@ current dir: /tmp/1/2/3/4/5
stud@stud15:~$
```
После выполнения скрипта текущая директория не изменилась.
```
```bash
$ mkdir_cd () {
mkdir -p $1
cd $1
@ -63,7 +63,7 @@ $ diff <(cat buylist) <(cat bought)
### 4.
Попробуйте условные выражения в скрипте в if конструкции:
```
```bash
$ cat 4.sh
if [[ true && true ]]
then
@ -81,7 +81,7 @@ True
### 5.
Напишите скрипт, который проходит по всем файлам, переданным в качестве аргументов, и ищет в них строку hello. Перенаправьте grep `STDOUT` и `STDERR` в специальный файл `/dev/null`. Для каждого файла в if создайте файл с содержимым `hello`, если `grep` завершился с ошибкой.
```
```bash
$ cat 5.sh
for f in $@; do
grep hello $f 2> /dev/null 1> /dev/null
@ -101,7 +101,7 @@ $ grep hello /tmp/* 2> /dev/null
### 6.
Установите пакет shellcheck и проверьте написанный вами ранее скрипт одноименной командой.
```
```bash
$ shellcheck 5.sh
In 5.sh line 1:
@ -146,7 +146,7 @@ For more information:
### 7.
Напишите скрипт, который выполняет следующий код:
```
```bash
$ cat ./7.sh
#!/usr/bin/env python
import sys
@ -164,7 +164,7 @@ $ ./7.sh 1 2 3 4 5
Функции выполняются в текущей среде оболочке, тогда как скрипты выполняются в своем собственном процессе.
Проверьте, что функции могут изменять переменные среды, например, изменить текущий каталог, тогда как скрипт не может. Напишите скрипт, в котором инициализируются две переменные `A` и `B`. Перед одной из них указывается `export `. Выполните скрипт и посмотрите на выдачу команды `env`. Выполните файл командой source (source --help). Какие переменные экспортировались в оболочку?
```
```bash
$ cat 8.sh
#!/bin/bash
A=1
@ -178,7 +178,7 @@ B=2
### 9.
Напишите сценарий bash, который запускает следующий сценарий до тех пор, пока он не завершится аварийно, записывает стандартный вывод и потоки ошибок в файлы и печатает все в конце.
```
```bash
stud@stud15:~$ cat random_bug_script.sh
#!/usr/bin/env bash
@ -260,7 +260,7 @@ The error was using magic numbers
```
Бонусный балл, за то, что вы можете сообщить, сколько запусков потребовалось для сбоя сценария.
```
```bash
stud@stud15:~$ cat mean.sh
#!/bin/bash
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)
```
```
```bash
root@stud15:~# cat create_user.sh
#!/bin/bash
@ -381,7 +381,9 @@ done
root@stud15:~# cat nodes
10.160.179.25
10.160.179.55
```
```
root@stud15:~# ./create_user.sh nodes user6
Generating public/private ed25519 key pair.
Your identification has been saved in /root/users.ssh/user6/id_ed25519
@ -464,5 +466,4 @@ drwx------ 2 user3 user3 4096 сен 15 11:38 user3
drwx------ 2 user4 user4 4096 сен 15 11:42 user4
drwx------ 2 user5 user5 4096 сен 15 11:44 user5
drwx------ 2 user6 user6 4096 сен 15 11:47 user6
```
```
Loading…
Cancel
Save