BASH — различия между версиями
Root (обсуждение | вклад) |
Root (обсуждение | вклад) |
||
Строка 33: | Строка 33: | ||
0 — STDIN, 1 — STDOUT и 2 — STDERR<br/> | 0 — STDIN, 1 — STDOUT и 2 — STDERR<br/> | ||
По умолчанию, если не указать номер, то будет подразумеваться STDOUT. | По умолчанию, если не указать номер, то будет подразумеваться STDOUT. | ||
+ | |||
+ | В примере | ||
+ | cron job command > /dev/null 2>&1 | ||
+ | видно, что команда направляет свой стандартный вывод в /dev/null (псевдоустройство, которое может принять произвольный объём данных, не сохраняя их совершенно нигде, следовательно, подавив стандартный вывод).<br/> | ||
+ | Затем все ошибки (то есть STDERR) перенаправляет в стандартный вывод. Необходимо поставить амперсанд "&" перед номером назначения. |
Версия 17:17, 8 октября 2020
Любой bash скрипт начинается со следующей строки
#!/bin/bash
Переменная $0 - равна имени файла(скрипта). Допустим имя world и скрипт выглядит так
#!/bin/bash echo "Hello $0"
Запуск скрипта приведёт к выводу на экран
# ./world Hello world
Все следующие $1, $2 и т.д. переменные, это параметры которые передаём скрипту. Допустим переменные будут vasya, petya.
#!/bin/bash echo "My $0" echo 'Privet $1' echo 'Privet $2'
Результат
# ./script vasya petya My script Privet vasya Privet petya
Стандартные ввод, вывод и ошибка
Существует три стандартных значения ввода и вывода для программ. Ввод получают от клавиатуры (интерактивная, диалоговая программа), или из программы, обрабатывающей вывод другой программы.
Результат программы обычно печатается в стандартной вывод и иногда в файл «STDERR» (ошибка).
Все это три дескриптора файла, которые часто называют STDIN, STDOUT и STDERR.
Но часто к ним обращаются не по имени, а по номеру:
0 — STDIN, 1 — STDOUT и 2 — STDERR
По умолчанию, если не указать номер, то будет подразумеваться STDOUT.
В примере
cron job command > /dev/null 2>&1
видно, что команда направляет свой стандартный вывод в /dev/null (псевдоустройство, которое может принять произвольный объём данных, не сохраняя их совершенно нигде, следовательно, подавив стандартный вывод).
Затем все ошибки (то есть STDERR) перенаправляет в стандартный вывод. Необходимо поставить амперсанд "&" перед номером назначения.