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

Введение в Bash-скриптинг

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

В Bash-скриптинге у программы есть три «потока»:

  • STDIN (стандартный ввод). Поток данных в программу
  • STDOUT (стандартный вывод). Поток данных из программы
  • STDERR (стандартный поток ошибок). Ошибки программы

По умолчанию эти потоки читают данные из терминала и выводят результат в него.

Вы можете встретить 2> /dev/null в вызовах скриптов — это перенаправление STDERR с удалением вывода. (1> /dev/null — то же самое для STDOUT)

Введение в Bash-скриптинг

STDIN-STDOUT: схема

Ниже показана схема стандартных потоков на основе ранее созданного конвейера:

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

Введение в Bash-скриптинг

Пример STDIN

Рассмотрим текстовый файл (sports.txt) с тремя строками данных.

football
basketball
swimming

Команда cat sports.txt 1> new_sports.txt читает данные из файла и записывает STDOUT в новый файл. Посмотрите, что произойдёт при вызове cat new_sports.txt

football
basketball
swimming
Введение в Bash-скриптинг

STDIN и ARGV

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

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

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

Пример ARGV

Рассмотрим пример скрипта (args.sh):

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Введение в Bash-скриптинг

Запуск примера 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-скриптинг

Давайте потренируемся!

Введение в Bash-скриптинг

Preparing Video For Download...