Bash скрипты работы со схемой базы данных #5
Replies: 1 comment 1 reply
-
Между |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
По просьбе @Debianov описываю синтаксис скриптов добавленных мною из PR #4.
Любой скрипт из PR начинается с
#!/bin/bash
. Это последовательность символов называется шебанг. Она указывается для того, чтобы операционная система запустила нужный командный интерпретатор для выполнения команд в скрипте.По умолчанию во многих системах стоит
bash
, но не везде, из-за чего скрипт заработает не во всех Unix системах. Чтобы скрипт выполнился на остальных системах, используется#!/bin/sh
. Будет выбран командный интерпретатор по умолчанию в системе. Это может быть иbash
,dash
,zsh
, и т.д., смотря на какой из них поставлена символьная ссылка в/bin/sh
. Каждый интерпретатор добавляет новый команды, либо переопределяет старые, но все поддерживают условный минимум, позволяющий запустить#!/bin/sh
скрипт.Для запуска скрипта есть несколько способов:
chmod +x script.sh
. Запустить как исполняемый файл. Например:./script.sh
.source script.sh
или. script.sh
.bash script.sh
.Запускать же лучше всего первым способом.
Код статуса. Любая программа при завершении работы возвращает целочисленное число. Если оно равно 0, то программа завершилась удачно. Если не 0, то неудачно.
[[ ]]
- модифицированный[ ]
отbash
.[ ]
- альтернативное написание командыtest
.test
- проверка выражения, возвращающая 0 при верном выражении.$#
- количество введённых аргументов (кроме$0
).echo
- вывод текста в стандартный поток вывода.printf
- вывод форматированного текста в стандартный поток вывода.exit
- завершение работы скрипта с кодом статуса (по умолчанию 0).read
- чтение текста из стандартного потока ввода.dirname
- исключение последнего элемента из пути.dirname /path/to/dir
->/path/to
.команда1 || команда2
- команда2 выполниться в том случае, если код статуса команда1 не равен 0.команда1 && команда2
- команда2 выполниться в том случае, если код статуса команда1 равен 0.echo "..." >&2
- Переадресация стандартного потока вывода в стандартный поток ошибок.echo "..." 2>&1 >/dev/null
- Стандартный поток ошибок переадресован в стандарнтый поток вывода, а стандартный поток вывода адресован в файл/dev/null
(пустота). С помощью такой конструкции мы получаем только сообщения об ошибках исключая обычные сообщения.Для дополнительной информации о
bash
смотритеman bash
.Beta Was this translation helpful? Give feedback.
All reactions