In Linux we trust!

Bash. Массивы + Условия

Баш, работа с массивами и условиями.

Массивы:

Массив с двумя переменными для тестов:

$ array[1]=one
$ array[2]="two three"

Создадим тестовый скрипт (args.sh), он будет показывать список переданных аргументов.

#!/bin/bash
i=1
for var in "$@"; do
    echo "Argument #${i}: ${var}"
    i=$(($i + 1))
done

Скрипт демонстирует наглядность переданных аргументов:

$ ./args.sh 1 "2 3"
Argument #1: 1
Argument #2: 2 3

Различные варианты итерации по массиву:

$ ./args.sh ${array[*]}
Argument #1: one
Argument #2: two
Argument #3: three
$ ./args.sh "${array[*]}"
Argument #1: one two three
$ ./args.sh ${array[@]}
Argument #1: one
Argument #2: two
Argument #3: three
$ ./args.sh "${array[@]}"
Argument #1: one
Argument #2: two three

Длина массива:

$ echo ${#array[@]}
2

Срез массива (число означает индекс, начиная с которого сделать срез):

$ echo ${array[@]:2}
two three

Сделать копию массива:

$ array_copy=( "${array[@]}" )

Условия:

[ -d FILE ]: Возвращает true, если FILE является директорией.

[ -f FILE ]: Возвращает true, если FILE является нормальным (regular) файлом.

[ -r FILE ]: Возвращает true, если FILE является читаемым.

[ -w FILE ]: Возвращает true, если FILE является записываемым.

[ -x FILE ]: Возвращает true, если FILE является исполняемым.

[ -s FILE ]: Возвращает true, если FILE файл ненулевой длины.

[ -z STRING ]: Возвращает true, если STRING строка нулевой длины (или неопределена).

[ -n STRING ]: Возвращает true, если STRING строка ненулевой длины.

[ STRING1 == STRING2 ] или [ STRING1 != STRING2 ]: Сравнение строк.

-eq, -ne, -lt, -le, -gt, -ge: Сравнение чисел между собой.

-a, -o: Конъюнкция и дизъюнкция соответственно.