Стандартні потоки й аргументи

Вступ до Bash Scripting

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

У Bash-скриптах є три «потоки» для вашої програми:

  • STDIN (standard input). Потік даних у програму
  • STDOUT (standard output). Потік даних з програми назовні
  • STDERR (standard error). Помилки програми

Типово ці потоки читаються з термінала й виводяться в нього.

Часто бачимо 2> /dev/null у викликах скриптів — це перенаправляє STDERR на видалення. (1> /dev/null — це STDOUT)

Вступ до Bash Scripting

STDIN-STDOUT наочно

Ось графічне уявлення стандартних потоків на прикладі створеного раніше конвеєра:

Схема стандартних потоків

Вступ до Bash Scripting

Приклад STDIN

Припустімо, є текстовий файл (sports.txt) із 3 рядками даних.

football
basketball
swimming

Команда cat sports.txt 1> new_sports.txt читає дані з файлу та перенаправляє STDOUT у новий файл. Подивіться, що буде, якщо виконати cat new_sports.txt

football
basketball
swimming
Вступ до Bash Scripting

STDIN vs ARGV

Ключове поняття в Bash-скриптах — це аргументи

Bash-скрипти можуть приймати аргументи: додайте пробіл після команди запуску скрипта.

  • ARGV — масив усіх аргументів, переданих програмі.
  • Кожен аргумент доступний через нотацію $: перший — $1, другий — $2 тощо.
  • $@ і $* повертають усі аргументи з ARGV
  • $# дає кількість аргументів
Вступ до Bash Scripting

Приклад ARGV

Розгляньмо приклад скрипта (args.sh):

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Вступ до Bash Scripting

Запуск прикладу з ARGV

Запуск bash args.sh one two three four five дає:

one
two
one two three four five
There are 5 arguments

 

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Вступ до Bash Scripting

Давайте потренуємось!

Вступ до Bash Scripting

Preparing Video For Download...