Linux Mint    Ubuntu    openSUSE    Asterisk    FreeBSD    Android    Nokia N900    Игры в Linux
 Linux Mint    Ubuntu     openSUSE     Asterisk     FreeBSD     Android     N900     Games

Изучаем Bash: Оператор if / then / else. Проверка условий

Доброго времени суток всем! Проверка условий есть практически во всех языках программирования и конечно в bash. Данное действие выполняет оператор if / then / else.

Сегодня мы об этом и поговорим.

Прицип данного оператора заключается в следующем: Проверка условий (if), если условие возвращает код завершения 0 (истинна), то выполняется продожение (then), с еще одной или списком команд. Если же условие завершается не с 0, а с иным кодом, то есть ложь, то подключается оператор else и выполняет альтернативное действие.

Давайте посмотрим простой пример:

Я написал скрипт, который ищет в файле xorg.log слово radeonhd и в случае его нахождения, заменяет его на fglrx. Если же слово radeonhd не найдено, то выйдет сообщение об этом.

Скрипт:

#!/bin/bash

var1=radeonhd     # Объявил переменные
var2=fglrx     # Объявил переменные

if

grep -n $var1 /home/maxim/xorg.log     # Ищет в файле xorg.log переменную $var1, а именно radeonhd, а также номер строчки, на которой она находится

then

sed -i 's/'$var1'/'$var2'/g' /home/maxim/xorg.log     # Если "radeonhd" будет найдено, то оно будет заменено на переменную $var2, fglrx

else

echo 'Данное слово, '$var1' не найдено'     # Если слово radeonhd не будет в нашем файле найденно, то выйдет это сообщение

fi

В скрипте используются команды, которые мы уже ранее рассматривали - grep и sed.

Отмечу, что оператор if / then / else можно писать в одну строчку, то тогда скрипт будет выглядеть так:

#!/bin/bash

var1=radeonhd
var2=fglrx

if grep -n $var1 /home/maxim/xorg.log; then sed -i 's/'$var1'/'$var2'/g' /home/maxim/xorg.log; else echo 'Данное слово, '$var1' не найдено'

fi

Как мы видим из примера, для отделения операторов нужно использовать символ ";".

Вопросы?

В следующих статьях, мы рассмотрим более сложные конструкции с данным оператором.

undertaker аватар

Вот эту тему я хотел побыстрее узнать :=)

Linux_man аватар

далее я рассмотрю более сложные варианты с этим оператором :) оставайтесть на связи :)))