Bash

Переменные и параметры

$$	pid текущего shell (самого процесса-сценария)
$!	pid последнего процесса в фоновом режиме
$?	код возврата последнего процесса (функции или скрипта)
$x	где x — номер параметра, переданного скрипту ($1, $2 и т. д., $0 — последний запущенный скрипт)
$#	количество аргументов командной строки
$*	все аргументы в виде одной строки (слова)
$@	то же самое, что и $*, но при этом каждый параметр представлен как отдельная строка (слово)
$-	список флагов, переданных сценарию
$_	содержит последний аргумент предыдущей команды

Потоки вывода и файловые дескрипторы

du -h 1 > ./log 2>&1

1 - Поток вывода

2 - Поток ошибок

&1 - обозначает файловый дескриптор 1

Конструкции

0-9

A

Массивы

array=( one two three ) files=( "/etc/passwd" "/etc/group" "/etc/hosts" ) limits=( 10, 20, 26, 39, 48)

B

C

case

case "$1" in
start)
esac

D

debug

Необходимо добавить параметр -x Пример:

# bash -x script.sh

dialog

Представляет из себя интерфейс для библиотеки ncurses. И позволяет строить диалоги из скрипта.

Dialog

E

F

function

function f1{ # params $1 echo $1 } f1 A

foreach

for fn in `cat filenames.txt`; do echo "the next file is $fn" cat $fn done
while read filename do echo "Printing: $filename" cat "$filename" done < filenames.txt
for fn in cat filenames.txt; do cat "$fn"; done
for i in "${arrayName[@]}" do : # do whatever on $i done

G

H

I

Индексы

[@] - Ссылка на копию массива в переменной $1

[*] - Строка

[n]

var=(1 2 3 4)

echo ${var[@]}

if

if что-то then # делать тот-то else # делать тот-то fi
if что-то; then # делать тот-то else # делать тот-то fi

input

Запрос символа от пользователя

echo -n "Продолжить? (y/n) " read item case "$item" in y|Y) echo "Ввели «y», продолжаем..." ;; n|N) echo "Ввели «n», завершаем..." exit 0 ;; *) echo "Ничего не ввели. Выполняем действие по умолчанию..." ;; esac

J

K

L

M

N

O

P

Q

R

S

status

Проверка статуса выполнения программы

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

T

test

Параметры:

-f - Наличие файла

-d - Наличие директории

-e -

-z - Наличие данных в строке

Сокращенный вариант [ ]

http://www.ibm.com/developerworks/ru/library/l-bash-test/

U

V

W

X

Y

Ссылки

Частые ошибки программирования на Bash (часть 1)

Частые ошибки программирования на Bash (часть 2)

Частые ошибки программирования на Bash (часть 3)

Частые ошибки программирования на Bash (часть 4)

Частые ошибки программирования на Bash (часть 5)

https://ru.wikipedia.org/wiki/Bash

Перенаправление вывода

Основы BASH. Часть 1

Основы BASH. Часть 2.

http://bappoy.pp.ru/2008/12/22/bash-pitfalls-part03.html

Advanced Bash-Scripting Guide

http://habrahabr.ru/post/151771/

Особенности работы оболочки bash

Искусство программирования на языке сценариев командной оболочки

http://eddnet.org/?tag=bash

Видео уроки

https://www.youtube.com/playlist?list=PLLyG9JTjVd9VTEKisukGLJhl8H2YeIN09