Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
bash:developing [2018/01/30 00:01] – [Применение в коде] mirocow | bash:developing [2023/06/24 12:36] (текущий) – [R] mirocow |
---|
files=( "/etc/passwd" "/etc/group" "/etc/hosts" ) | files=( "/etc/passwd" "/etc/group" "/etc/hosts" ) |
limits=( 10, 20, 26, 39, 48) | limits=( 10, 20, 26, 39, 48) |
| </code> |
| |
| ==== ARGV ==== |
| |
| <code bash> |
| # ------------- SCRIPT ------------- # |
| |
| #!/bin/bash |
| |
| echo |
| echo "# arguments called with ----> ${@} " |
| echo "# \$1 ----------------------> $1 " |
| echo "# \$2 ----------------------> $2 " |
| echo "# path to me ---------------> ${0} " |
| echo "# parent path --------------> ${0%/*} " |
| echo "# my name ------------------> ${0##*/} " |
| echo |
| exit |
| |
| # ------------- CALLED ------------- # |
| |
| # Notice on the next line, the first argument is called within double, |
| # and single quotes, since it contains two words |
| |
| $ /misc/shell_scripts/check_root/show_parms.sh "'hello there'" "'william'" |
| |
| # ------------- RESULTS ------------- # |
| |
| # arguments called with ---> 'hello there' 'william' |
| # $1 ----------------------> 'hello there' |
| # $2 ----------------------> 'william' |
| # path to me --------------> /misc/shell_scripts/check_root/show_parms.sh |
| # parent path -------------> /misc/shell_scripts/check_root |
| # my name -----------------> show_parms.sh |
| |
| # ------------- END ------------- # |
</code> | </code> |
===== B ===== | ===== B ===== |
===== Q ===== | ===== Q ===== |
===== R ===== | ===== R ===== |
| |
| <code bash> |
| $ IFS=' ' read -r -a DATABASES_SELECTED <<< "$DATABASES_SELECTED" |
| $ read str <<< " x "; echo "-$str-" |
| -x- |
| $ IFS="" read str <<< " x "; echo "-$str-" |
| - x - |
| $ IFS= read str <<< " x "; echo "-$str-" |
| - x - |
| $ _ |
| </code> |
| |
| * IFS=";" выставляем делимитер разбивки (в нашем случае ";") |
| * set -- $line - разбиваем строку, после чего каждая ее часть будет доступна как $1, $2, ... |
===== S ===== | ===== S ===== |
| |
====== test ====== | ====== test ====== |
| |
* Параметры: | * Параметры: |
* -f - Наличие файла | * ''-b file'' — истина, если file существует и является специальным блочным устройством. |
* -d - Наличие директории | * ''-c file'' — истина, если file существует и символьное устройство. |
* -e - | * ''-d file'' — истина, если file существует и является каталогом. |
* -z - Наличие данных в строке | * ''-e file'' — истина, если file существует. |
* = | * ''-f file'' — истина, если file существует и является обычным файлом. |
* != | * ''-g file'' — истина, если file существует и имеет установленным групповой идентификатор (set-group-id). |
* Сокращенный вариант **[ ]** | * ''-k file'' — истина, если file имеет установленным «sticky» бит. |
* http://www.ibm.com/developerworks/ru/library/l-bash-test/ | * ''-L file'' — истина, если file существует и является символьной ссылкой. |
| * ''-p file'' — истина, если file существует и является именованным каналом (pipe). |
| * ''-r file'' — истина, если file существует и читаем. |
| * ''-s file'' — истина, если file существует и имеет размер больше, чем ноль. |
| * ''-S file'' — истина, если file существует и является сокетом. |
| * ''-t [fd]'' — истина, если fd открыт на терминале. Если fd пропущен, по умолчанию 1 (стандартное устройство вывода). |
| * ''-u file'' — истина, если file существует и имеет установленным бит пользователя (set-user-id). |
| * ''-w file'' — истина, если file существует и записываем. |
| * ''-x file'' — истина, если file существует и исполняем. |
| * ''-O file'' — истина, если file существует и его владелец имеет эффективный идентификатор пользователя. |
| * ''-G file'' — истина, если file существует и его владелец имеет эффективный идентификатор группы. |
| * ''file1 -nt file2'' — истина, если file1 новее (дата модификации), чем file2. |
| * ''file1 -ot file2'' — истина, если file1 старее, чем file2. |
| * ''file1 -ef file2'' — истина, если file1 и file2 имеют то же устройство и номер inode. |
| * ''-z string'' — истина, если длина string равна нулю. |
| * ''-n string'' — истина, если длина string не ноль. |
| * ''string1 = string2'' — истина, если строки равны. |
| * ''string1 != string2'' — истина, если строки не равны. |
| * ''! expr'' — истина, если выражение expr ложь. |
| * ''expr1 -a expr2'' — истина, если оба выражения expr1 и expr2 истина. |
| * ''expr1 -o expr2'' — истина, если хотя бы одно из выражений expr1 или expr2 истина. |
| * ''arg1 %оператор% arg2 -eq, -ne, -lt, -le, -gt, или -ge'' — эти арифметические бинарные операции возвращают истину, если arg1 равно (-eq), не равно (-ne), меньше чем (-lt), меньше чем или равно (-le), больше чем (-gt), или больше или равно (-ge), чем arg2, соответственно. arg1 и arg2 могут быть положительными целыми, отрицательными целыми, или специальными выражениями -l string, которые вычисляют длину string. |
| * Сокращенный вариант **[ ]** |
| |
===== Применение в коде ===== | ===== Применение в коде ===== |
===== Y ===== | ===== 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 | |
| |