Условные операторы в 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

./check_existence.sh /etc/hosts

/etc/hosts exists

./check_existence.sh missing.log

missing.log doesn't exist

./check_existence.sh test.md

test.md exists

Похожие статьи
Bash
Основы Bash
Скрипты
awk
grep
sed
Ошибки Bash
Zsh
Unix

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: