Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>bash developing develop}} ====== Bash ====== ===== Переменные и параметры ===== |$$ |pid текущего shell (самого процесса-сценария)| |$! |pid последнего процесса в фоновом режиме| |$? |код возврата последнего процесса (функции или скрипта)| |$x |где x — номер параметра, переданного скрипту ($1, $2 и т. д., $0 — последний запущенный скрипт)| |$# |количество аргументов командной строки| |$* |все аргументы в виде одной строки (слова)| |$@ |то же самое, что и $*, но при этом каждый параметр представлен как отдельная строка (слово)| |$- |список флагов, переданных сценарию| |$_ |содержит последний аргумент предыдущей команды| ===== Потоки вывода и файловые дескрипторы ===== * du -h 1 > ./log 2>&1 * 1 - Поток вывода * 2 - Поток ошибок * &1 - обозначает файловый дескриптор 1 ===== Конструкции ===== ===== 0-9 ===== ===== A ===== ==== Массивы ==== <code bash> array=( one two three ) files=( "/etc/passwd" "/etc/group" "/etc/hosts" ) limits=( 10, 20, 26, 39, 48) </code> ===== B ===== ===== C ===== ==== case ==== <code> case "$1" in start) esac </code> ===== D ===== ==== debug ==== Необходимо добавить параметр -x Пример: <code># bash -x script.sh</code> ==== dialog ==== Представляет из себя интерфейс для библиотеки ncurses. И позволяет строить диалоги из скрипта. [[system:dialog|]] ===== E ===== ===== F ===== ==== function ==== <code bash> function f1{ # params $1 echo $1 } f1 A </code> ==== foreach ==== <code bash> for fn in `cat filenames.txt`; do echo "the next file is $fn" cat $fn done </code> <code bash> while read filename do echo "Printing: $filename" cat "$filename" done < filenames.txt </code> <code bash> for fn in cat filenames.txt; do cat "$fn"; done </code> <code bash> for i in "${arrayName[@]}" do : # do whatever on $i done </code> ===== G ===== ===== H ===== ===== I ===== === Индексы === * [@] - Ссылка на копию массива в переменной $1 * [*] - Строка * [n] * var=(1 2 3 4) * echo ${var[@]} === if === <code bash> if что-то then # делать тот-то else # делать тот-то fi </code> <code bash> if что-то; then # делать тот-то else # делать тот-то fi </code> === input === Запрос символа от пользователя <code bash> echo -n "Продолжить? (y/n) " read item case "$item" in y|Y) echo "Ввели «y», продолжаем..." ;; n|N) echo "Ввели «n», завершаем..." exit 0 ;; *) echo "Ничего не ввели. Выполняем действие по умолчанию..." ;; esac </code> ===== J ===== ===== K ===== ===== L ===== ===== M ===== ===== N ===== ===== O ===== ===== P ===== ===== Q ===== ===== R ===== ===== S ===== ==== status ==== Проверка статуса выполнения программы <code bash> rm test_file if [ $? -eq 0 ]; then $SETCOLOR_SUCCESS echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" $SETCOLOR_NORMAL echo else $SETCOLOR_FAILURE echo -n "$(tput hpa $(tput cols))$(tput cub 6)[fail]" $SETCOLOR_NORMAL echo fi </code> ===== T ===== ====== test ====== * Параметры: * -f - Наличие файла * -d - Наличие директории * -e - * -z - Наличие данных в строке * Сокращенный вариант **[ ]** * http://www.ibm.com/developerworks/ru/library/l-bash-test/ ===== U ===== ===== V ===== ===== W ===== ===== X ===== ===== Y ===== ====== Ссылки ====== * [[http://binsh.ru/2008/12/13/bash-pitfalls-part01.html|Частые ошибки программирования на Bash (часть 1)]] * [[http://binsh.ru/2008/12/18/bash-pitfalls-part02.html|Частые ошибки программирования на Bash (часть 2)]] * [[http://binsh.ru/2008/12/22/bash-pitfalls-part03.html|Частые ошибки программирования на Bash (часть 3)]] * [[http://binsh.ru/2008/12/24/bash-pitfalls-part04.html|Частые ошибки программирования на Bash (часть 4)]] * [[http://binsh.ru/2008/12/29/bash-pitfalls-part05.html|Частые ошибки программирования на Bash (часть 5)]] * https://ru.wikipedia.org/wiki/Bash * [[system:shell:bash:Перенаправление вывода|Перенаправление вывода]] * [[bash:основы_bash._часть_1|Основы BASH. Часть 1]] * [[bash:основы_bash._часть_2|Основы BASH. Часть 2.]] * http://bappoy.pp.ru/2008/12/22/bash-pitfalls-part03.html * [[http://www.opennet.ru/docs/RUS/bash_scripting_guide/|Advanced Bash-Scripting Guide]] * http://habrahabr.ru/post/151771/ * [[http://linux.yaroslavl.ru/docs/conf/gnu-util/bash/bash.html|Особенности работы оболочки bash]] * [[http://www.opennet.ru/docs/RUS/bash_scripting_guide/|Искусство программирования на языке сценариев командной оболочки]] * http://eddnet.org/?tag=bash ====== Видео уроки ====== * https://www.youtube.com/playlist?list=PLLyG9JTjVd9VTEKisukGLJhl8H2YeIN09 СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal