Перейти к содержимому

 Друзья: Всё для вебмастера | [ Реклама на форуме ]


Rutor


Интерпретатор bash, Условия.

bash

  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1
Cлоны_они_повсюду

Cлоны_они_повсюду

    Бит

  • Members
  • 33 сообщений
Изображение
Условные операторы знакомы каждому кто хоть раз пытался писать программы и используются во всех языках программирования.
if-then-else

На примере разберемся с операторами сравнения


#!/bin/bash
onepar=$1 #в переменную onepar засовываем первый параметр скрипта
twopar=$2 #в переменную twopar засовываем второй параметр скрипта
if [[ "$onepar" -eq "$twopar" ]] #if обозначает слово ЕСЛИ. И у нас получается Если $onepar равен (используется оператор сравнения -eq) $twopar. В фигурных скобках мы обозначаем то что надо сравнить.
then #То выполняем действие.
echo «Равны» #Выводим сообщение о том что они действительно равны.
exit 0 # выходим из скрипта без ошибки
else # если же они не равны
echo «Не равны» #Выполняем действие.
fi #обозначаем окончание условия.


Результат выполнения скрипта



tisg@tisg:~$ ./start.sh 1 1
Равны
tisg@tisg:~$ ./start.sh 1 2
Не равны


В этом примере мы использовали структуру if-then-else. Посмотрим как она выглядит.



if [команда или несколько команд возвращающих код возврата]
then
[если выражение после команды if верно выполнить команду.]
else
[если выражение после if не верно выполнить другую команду.]
fi #обозначаем конец условия


Вот список наиболее используемых операторов сравнения
Файлы





-a file


истинно если файл существует.



-d file


истинно если файл существует и является директорией.



-f file


истинно если файл существует и является обычным файлом.



-r file


истинно если файл существует и доступен для чтения.



-s file


истинно если файл существует и его размер больше 0.



-w file


истинно если файл существует и доступен для записи.



-x file


истинно если файл существует и является исполняемым.



file1 -nt file2


истинно если файл file1 новее чем file2 или file1 (в соответствии со временем последнего изменения) существует, а file2 нет.



file1 -ot file2


истинно если файл file1 старше чем file2 или file2 существует, а file1 нет.



file1 -ef file2


истинно если оба файла ссылаются на одно и то же устройство или инод.
Строки





-z string


истинно если строка имеет нулевую длину.



-n string


истинно если длина строки не нулевая.



string1 = string2
string1 -eq string2


истинно если строки равны.



string1 != string2
string1 -ne string2


истинно если не равны.



string1 < string2
string1 -lt string2


истинно если строка 1 стоит в алфавитном порядке перед строкой 2.



string1 > string2
string1 -gt string2


истинно если строка 1 стоит в алфавитном порядке после строки 2.



-a,(&&) #логическое «И»
-o,(||) # логическое «ИЛИ»


Пример:



#!/bin/bash
myvar=$1 #Привсваиваем переменной первый параметр
if [ -z "$myvar" ] #проверяем не пустой ли он
then #Если пустой
echo «Введите первый параметр» #Выводим текст
else #Если не пустой
echo $myvar #Выводим этот параметр
fi #Заканчиваем условие


Работа скрипта:



tisg@ubuntu:~$ ./start.sh
Введите первый параметр
tisg@ubuntu:~$ ./start.sh 5
5

Множественный выбор  case


Если нужно сравнить одну переменную с большим количеством параметров идеально подойдет оператор case
Пример:




#!/bin/bash
echo «Выберите редатор для запуска:» #выводим меню
echo «1 Запустить nano»
echo «2 Запустить vi»
echo «3 Запустить gedit gui»
echo «4 Выход»
read doing #читаем в переменную $doing то что выбарает пользователь
case $doing in
1)
/usr/bin/nano # если $doing содержит 1, то запустить nano
;;
2)
/usr/bin/vi # если $doing содержит 2, то запустить vi
;;
3)
/usr/bin/gedit # если $doing содержит 3, то запустить gedit gui
;;
4)
exit 0
;;
*) #если пользователь ввёл неподходящую цифру выполнять следуещее действие
echo «Введено неправильное действие»
esac #окончание оператора case.


Источник: http://ubuntu-russian.ru
Автор: Cлоны_они_повсюду



Темы с аналогичным тегами bash

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных