Условные операторы в Bash
Введение | |
if else | |
Операторы сравнения | |
-e: Проверка существования файла | |
Похожие статьи |
Введение
Самое главное - следить за отступами перед и после квадратных скобок.
if else
#!/bin/bash
# Принимаем первый параметр из терминала
mode=$1
echo "start"
if [[ $mode = 1 ]]; then
echo "First"
elif [ $mode = 2 ]; then
echo "Second"
else
echo "Try using different parameter"
fi
Операторы сравнения
-n - строка не ноль
-z - строка null, то есть, имеет нулевую длину
Создадим непустую строку и применим к ней -n и -z
foo="bar";
[ -n "$foo" ] && echo "foo is not null"
foo is not null
[ -z "$foo" ] && echo "foo is null"
Теперь создадим пустую строку
foo="";
[ -n "$foo" ] && echo "foo is not null"
[ -z "$foo" ] && echo "foo is null"
foo is null
Проверка существования файла
Выполняется с помощью опции -e
Рассмотрим директорию sandbox со следующим содержанием.
sandbox/ ├── check_existence.sh └── test.md
vi check_existence.sh
#!/bin/bash if [ -e test.md ] ; then echo "test.md exists" else echo "file doesn't exist" fi
./check_existence.sh
test.md exists
В виде функции
#!/bin/bash check_existence() { if [ -e $1 ] ; then echo "$1 exists" else echo "$1 doesn't exist" fi } check_existence test.md check_existence missing.log
./check_existence.sh
test.md exists
missing.log doesn't exist
Добавим возможность принимать аргументы из командной строки
#!/bin/bash check_existence() { if [ -e $1 ] ; then echo "$1 exists" else echo "$1 doesn't exist" fi } check_existence test.md check_existence missing.log
./check_existence.sh
test.md exists
missing.log doesn't exist
[andrei@localhost sandbox]$ ./check_existence.sh /etc/hosts /etc/hosts exists [andrei@localhost sandbox]$ ./check_existence.sh missing.log missing.log doesn't exist [andrei@localhost sandbox]$ ./check_existence.sh test.md test.md exists