Latest web development tutorials

Shell основные операторы

Shell и других языков программирования, поддерживает множество операторов, в том числе:

  • Арифметические операторы
  • Операторы отношения
  • Логические операторы
  • Строковые операторы
  • Файл Test Операторы

Родной баш не поддерживает простые математические операции, но может быть достигнуто с помощью других команд, таких как AWK и выражение, выражение используется наиболее часто.

выраж является инструментом вычисления выражения, используйте его, чтобы завершить операцию оценки выражений.

Например, чтобы сложить два числа (обратите внимание на использование `анти-кавычки вместо одинарные кавычки '):

#!/bin/bash

val=`expr 2 + 2`
echo "两数之和为 : $val"

Запуск экземпляра »

Выполните сценарий, вывод выглядит следующим образом:

两数之和为 : 4

Две вещи, чтобы отметить:

  • Между выражения и операторы должны иметь место, например, 2 + 2 не так, вы должны написать 2 + 2, что мы знакомы с большинством языков программирования не совпадают.
  • Полное выражение будет `` содержится, обратите внимание, что этот символ обычно не используется в одинарные кавычки, под клавишей Esc.

Арифметические операторы

В следующей таблице перечислены общие арифметические операторы, предполагая 10 переменной, переменная Ь 20:

операторы объяснение примеров
+ прибавление `Expr $ а + $ b` результат 30.
- вычитание `Expr $ а - $ b` результат -10.
* умножение `Expr $ A \ * Результаты $ b` за 200.
/ разделение `Expr $ б / $ результат A` 2.
% остаток `Expr $ Ь% результата $ A` 0.
= присваивание а = $ Ь переменной Ь будет присвоить значение а.
== Ровный. Используется для сравнения двух чисел, то же возвращение истинного. [$ A == $ B] возвращает ложь.
! = Не равно. Используется для сравнения двух чисел не одни и те же возвращает истину. [$ A! = $ B] возвращает истину.

Примечание: Условное выражение должно быть заключено в квадратные скобки, и пробел, например:[$ а == $ Ь] неправильно и должно быть записано в виде[$ а == $ b].

примеров

Арифметические операторы примеры являются следующие:

#!/bin/bash
# author:本教程
# url:www.w3big.com

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi

Выполните сценарий, вывод выглядит следующим образом:

a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a 不等于 b

Примечание:

  • Умножение знак (*) должны быть добавлены перед обратной косой черты (\) для достижения умножения;
  • если ..., то ... фи условно отчетность, последующая деятельность будет покрыта.
  • В оболочке MAC синтаксиса выраж: $ ((выражение)), где выражение "*" нужно бежать символ "\" .

Операторы отношения

Относительные операторы поддерживают только цифровые, не поддерживает строку, если значение строки не является числом.

В следующей таблице перечислены наиболее часто используемые операторы сравнения, предполагая 10 переменной, переменная Ь 20:

операторы объяснение примеров
-eq Детектирование ли два числа равны, равные возвращает TRUE. [$ A $ -eq Ь] возвращает ложь.
-ne Детектирование ли два числа равны, не равно возвращает истину. [$ A $ -ne Ь] возвращает истину.
-gt Левые больше числа обнаруженных справа, и если да, то он возвращает истину. [$ A $ -gt Ь] возвращает ложь.
-lt Обнаружение число меньше, чем справа налево, и если да, то он возвращает истину. [$ A $ -lt Ь] возвращает истину.
-ge Детектирование ли число равно справа от левой стороны большой, и если да, то он возвращает истину. [$ A $ -ge Ь] возвращает ложь.
-le Является ли число обнаружения меньше или равна справа налево, если он есть, он возвращает истину. [$ A $ -le Ь] возвращает истину.

примеров

Реляционные операторы примеры являются следующие:

#!/bin/bash
# author:本教程
# url:www.w3big.com

a=10
b=20

if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等于 b"
else
   echo "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
then
   echo "$a -ne $b: a 不等于 b"
else
   echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
   echo "$a -gt $b: a 大于 b"
else
   echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
   echo "$a -lt $b: a 小于 b"
else
   echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
   echo "$a -ge $b: a 大于或等于 b"
else
   echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
   echo "$a -le $b: a 小于或等于 b"
else
   echo "$a -le $b: a 大于 b"
fi

Выполните сценарий, вывод выглядит следующим образом:

10 -eq 20: a 不等于 b
10 -ne 20: a 不等于 b
10 -gt 20: a 不大于 b
10 -lt 20: a 小于 b
10 -ge 20: a 小于 b
10 -le 20: a 小于或等于 b

Логические операторы

В следующей таблице перечислены наиболее часто используемые логические операторы, предполагая 10 переменной, переменная Ь 20:

операторы объяснение примеров
! Нефункционирующем, выражение истинно возвращает ложь, в противном случае она возвращает истину. [! Ложь] возвращает истину.
Операция ИЛИ, есть истинное выражение возвращает истину. [$ A -lt 20 -o $ B -gt 100] возвращает истину.
-a И операции, два выражения верны, прежде чем вернуться верно. [$ A -lt 20 -a $ B -gt 100] возвращает ложь.

примеров

Логические операторы примеры являются следующие:

#!/bin/bash
# author:本教程
# url:www.w3big.com

a=10
b=20

if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a != $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a -lt 100 -a $b -gt 15 : 返回 true"
else
   echo "$a -lt 100 -a $b -gt 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : 返回 true"
else
   echo "$a -lt 100 -o $b -gt 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : 返回 true"
else
   echo "$a -lt 100 -o $b -gt 100 : 返回 false"
fi

Выполните сценарий, вывод выглядит следующим образом:

10 != 20 : a 不等于 b
10 -lt 100 -a 20 -gt 15 : 返回 true
10 -lt 100 -o 20 -gt 100 : 返回 true
10 -lt 100 -o 20 -gt 100 : 返回 false

Логические операторы

Ниже приведено описание логического оператора Shell, предполагая 10 переменной, переменная Ь 20:

операторы объяснение примеров
&& Логическое И [[$ A -lt 100 && $ B -gt 100]] возвращает ложь
|| Логическое ИЛИ [[$ A -lt 100 || $ B -gt 100]] Возвращает значение True

примеров

Примеры логических операторов заключаются в следующем:

#!/bin/bash
# author:本教程
# url:www.w3big.com

a=10
b=20

if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

Выполните сценарий, вывод выглядит следующим образом:

返回 false
返回 true

Строковые операторы

В следующей таблице перечислены часто используемые строковые операторы, взятые в качестве переменной "ABC", переменная Ь "EFG":

операторы объяснение примеров
= Обнаружение две строки равны, равные возвращает TRUE. [$ A = $ Ь] возвращает ложь.
! = Детектирование ли две строки равны, не равны возвращает истину. [$ A! = $ B] возвращает истину.
-z Детектирование ли длина строки равна 0 для 0 возвращает истину. [-z $ A] возвращает ложь.
-n Детектирование ли длина строки равна 0, отлична от нуля возврата верно. [-n $ A] возвращает истину.
ул Определение, является ли строка пустой, не пустой возвращает истину. [$ A] возвращает истину.

примеров

Строка Операторы примеры заключаются в следующем:

#!/bin/bash
# author:本教程
# url:www.w3big.com

a="abc"
b="efg"

if [ $a = $b ]
then
   echo "$a = $b : a 等于 b"
else
   echo "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a != $b: a 等于 b"
fi
if [ -z $a ]
then
   echo "-z $a : 字符串长度为 0"
else
   echo "-z $a : 字符串长度不为 0"
fi
if [ -n $a ]
then
   echo "-n $a : 字符串长度不为 0"
else
   echo "-n $a : 字符串长度为 0"
fi
if [ $a ]
then
   echo "$a : 字符串不为空"
else
   echo "$a : 字符串为空"
fi

Выполните сценарий, вывод выглядит следующим образом:

abc = efg: a 不等于 b
abc != efg : a 不等于 b
-z abc : 字符串长度不为 0
-n abc : 字符串长度不为 0
abc : 字符串不为空

Файл Test Операторы

Тестовый файл оператор используется для обнаружения различных атрибутов файлов Unix.

Атрибут описано обнаружение следующим образом:

операторы объяснение примеров
-b файл Обнаружение ли файл является файлом блочного устройства, и если да, то он возвращает истину. [-b $ File] возвращает ложь.
-c файл Обнаружение ли файл является файлом символьного устройства, и если да, то он возвращает истину. [-c $ File] возвращает ложь.
-d файл Обнаружение ли файл является каталогом, и если да, то он возвращает истину. [-d $ File] возвращает ложь.
-f файл Определение является ли файл обычным файлом (ни один каталог или файл устройства), и если да, то он возвращает истину. [-f $ File] возвращает истину.
-g файл Обнаружение ли файл имеет бит SGID, и если да, то он возвращает истину. [-g $ File] возвращает ложь.
-k файл Детектирование имеет ли файл липкий бит (Липкий бит), и если да, то он возвращает истину. [-k $ File] возвращает ложь.
-p файл Обнаружение ли файл является именованным каналом, и если да, то он возвращает истину. [-p $ File] возвращает ложь.
-u файл Обнаружение ли файл имеет бит SUID, и если да, то он возвращает истину. [-u $ File] возвращает ложь.
-r файл Он определяет, является ли файл для чтения, и если да, то возвращает истину. [-r $ File] возвращает истину.
-w файл Обнаружение ли файл может быть записан, и если да, то он возвращает истину. [-w $ File] возвращает истину.
-x файл Определение того, является ли исполняемый файл, и если да, то он возвращает истину. [-x $ File] возвращает истину.
-s файл Детектирование пуст ли файл (размер файла больше, чем 0), не пусто возвращает истину. [-s $ File] возвращает истину.
-e файл Обнаружить файл (включая каталог) существует, и если да, то он возвращает истину. [-e $ File] возвращает истину.

примеров

Переменная файл указывает на файл "/var/www/w3big/test.sh", его размер составляет 100 байт, с разрешениями RWX. Следующий код будет обнаруживать различные атрибуты файла:

#!/bin/bash
# author:本教程
# url:www.w3big.com

file="/var/www/w3big/test.sh"
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi
if [ -w $file ]
then
   echo "文件可写"
else
   echo "文件不可写"
fi
if [ -x $file ]
then
   echo "文件可执行"
else
   echo "文件不可执行"
fi
if [ -f $file ]
then
   echo "文件为普通文件"
else
   echo "文件为特殊文件"
fi
if [ -d $file ]
then
   echo "文件是个目录"
else
   echo "文件不是个目录"
fi
if [ -s $file ]
then
   echo "文件不为空"
else
   echo "文件为空"
fi
if [ -e $file ]
then
   echo "文件存在"
else
   echo "文件不存在"
fi

Выполните сценарий, вывод выглядит следующим образом:

文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在