Latest web development tutorials

Shell podstawowe operatory

Shell i inne języki programowania, obsługuje różne podmioty, w tym:

  • operatory arytmetyczne
  • operatory relacyjne
  • operatory logiczne
  • Operatorzy strunowe
  • File operatorów polecenia test

Natywna bash nie obsługuje prostych operacji matematycznych, ale można osiągnąć za pomocą innych poleceń, takich jak awk i wyraż, wyraż najczęściej używane.

wyrażenie jest narzędzie obliczeniowe wyraz, użyj go, aby zakończyć operację wyrażeń.

Na przykład, aby dodać dwie liczby (zauważ użycie `anty-cudzysłowu zamiast pojedynczych cudzysłowów '):

#!/bin/bash

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

Uruchomienie instancji »

Wykonaj skrypt, wyjście jest w następujący sposób:

两数之和为 : 4

Dwie rzeczy do uwaga:

  • Między wyrażeniami i operatorzy muszą mieć miejsce, na przykład, 2 + 2 jest źle, trzeba pisać 2 + 2, które znamy z większości języków programowania nie są takie same.
  • Pełne ekspresji być `` zawarte, trzeba pamiętać, że ta postać nie jest powszechnie stosowany w pojedynczych cudzysłowach, poniżej klawisza Esc.

operatory arytmetyczne

Poniższa tabela zawiera listę typowych operatorów arytmetycznych, przy założeniu zmiennej 10, zmienna b jest 20:

operatorzy wyjaśnienie Przykłady
+ dodawanie `Expr $ a + $ B` wynik jest 30.
- odejmowanie `Expr $ a - $ B` wynik jest -10.
* mnożenie `Expr $ A \ * Wyniki $ B` na 200.
/ podział `Expr $ b / $ result A` 2.
% reszta `Expr $ b $% Wynik A` 0.
= przyporządkowanie a = $ b zmiennej b przypisze wartość.
== Równe. Służy do porównywania dwóch liczb, sam zwrot prawdziwe. [$ A == $ b] zwraca false.
! = Nie równe. Używane porównać dwie liczby nie są takie same zwraca true. [$ A! = $ B] zwraca true.

Uwaga: Wyrażenie warunkowe powinny być umieszczone w nawiasach kwadratowych, a to miejsce, na przykład:[$ a == $ b] jest źle i musi być zapisane jako[$ a == $ b].

Przykłady

Operatory arytmetyczne przykłady przedstawiają się następująco:

#!/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

Wykonaj skrypt, wyjście jest w następujący sposób:

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

Uwaga:

  • znak mnożenia (*) muszą zostać dodane przed backslash (\) w celu osiągnięcia mnożenia;
  • if ... then ... Fi jest sprawozdanie warunkowe, dalsze działania zostaną pokryte.
  • W powłoce MAC składni wyrażenie jest: $ ((wyrażenie)), gdzie wyrażenie "*" muszą uciec symbol "\".

operatory relacyjne

operatory relacyjne obsługują tylko cyfrowy nie obsługuje łańcuch, chyba że wartość ciągu jest liczbą.

Poniższa tabela zawiera listę często używanych operatorów relacyjnych, przy założeniu zmiennej 10, zmienna b jest 20:

operatorzy wyjaśnienie Przykłady
-eq Wykrywanie, czy dwie liczby są równe, równe Zwraca true. [$ A eq $ b] zwraca false.
-ne Wykrywanie, czy dwie liczby są równe, a nie równe zwraca true. [$ A -ne $ b] zwraca true.
-gt Po lewej stronie jest większa niż liczba wykrytych w prawo, a jeśli tak, to zwraca prawdziwe. [$ A -gt $ b] zwraca false.
-To Detekcja ta liczba jest mniejsza niż z prawej strony na lewo, a jeśli tak, to zwraca prawdziwe. [$ A -lt $ b] zwraca true.
-ge Wykrywanie, czy liczba jest równa prawej stronie lewej stronie duże, a jeśli tak, to zwraca prawdziwe. [$ A -ge $ b] zwraca false.
-le Czy liczba detekcji jest mniejsza niż lub równa prawej do lewej strony, jeśli tak jest, to zwraca prawdziwe. [$ A -le $ b] zwraca true.

Przykłady

operatory relacyjne przykłady przedstawiają się następująco:

#!/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

Wykonaj skrypt, wyjście jest w następujący sposób:

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

operatory logiczne

Poniższa tabela zawiera listę często używanych operatorów logicznych, zakładając zmienną 10, zmienna b jest 20:

operatorzy wyjaśnienie Przykłady
! Dla operacji, wyrażenie jest prawdziwe zwraca false, w przeciwnym wypadku zwraca wartość true. [! Fałsz] zwraca true.
-o Lub obsługi, istnieje prawdziwa wyrażenie zwraca wartość true. [$ A -lt 20 -o $ b -gt 100] zwraca true.
-a A operacje te dwa wyrażenia są prawdziwe przed zwróceniem prawdziwe. [$ A -lt 20 -a $ b -gt 100] zwraca fałsz.

Przykłady

operatory logiczne przykłady przedstawiają się następująco:

#!/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

Wykonaj skrypt, wyjście jest w następujący sposób:

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

Operatory logiczne

Poniżej opisano logicznego operatora Shell, przy założeniu zmiennej 10, zmienna b jest 20:

operatorzy wyjaśnienie Przykłady
&& logiczne AND [[$ A -lt 100 && $ b -gt 100]] zwraca false
|| logiczne OR [[$ A -lt 100 || $ b -gt 100]] Zwraca TRUE

Przykłady

Przykłady operatorów logicznych są następujące:

#!/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

Wykonaj skrypt, wyjście jest w następujący sposób:

返回 false
返回 true

Operatorzy strunowe

Poniższa tabela zawiera listę często używanych operatorów ciągów, przyjęte jako zmienna "abc", zmienna B "EFG":

operatorzy wyjaśnienie Przykłady
= Wykrywanie dwa ciągi są równe, równe Zwraca true. [$ A = $ b] zwraca false.
! = Wykrywanie, czy dwa ciągi są równe, a nie równe zwraca true. [$ A! = $ B] zwraca true.
-z Wykrywanie czy długość łańcucha wynosi od 0 do 0 zwraca prawda. [-z $ A] zwraca false.
-n Wykrywanie czy długość łańcucha wynosi 0, niezerowy return true. [-n $ A] zwraca true.
Str Wykrywanie, czy ciąg jest pusty, nie jest pusta return true. [$ A] zwraca true.

Przykłady

Operatorzy String przykłady przedstawiają się następująco:

#!/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

Wykonaj skrypt, wyjście jest w następujący sposób:

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

File operatorów polecenia test

Operator testowy plik jest używany do wykrywania różnych atrybutów plików Unix.

Atrybut wykrywania opisany w następujący sposób:

operatorzy wyjaśnienie Przykłady
-b plik Wykrywanie, czy plik jest plikiem urządzenia blokowego, a jeśli tak, to zwraca true. [-b $ File] zwraca fałsz.
-c plik Wykrywanie, czy plik jest plikiem urządzenia znakowego, a jeśli tak, to zwraca true. [-c $ File] zwraca fałsz.
-d plik Wykrywanie, czy plik jest katalogiem, a jeśli tak, to zwraca true. [-d $ File] zwraca fałsz.
-f plik Wykrywanie, czy plik jest zwykłym plikiem (ani katalogu plik lub urządzenie), a jeśli tak, to zwraca true. [-f $ Plik] zwraca true.
-g plik Wykrywanie, czy plik ma nieco SGID, a jeśli tak, to zwraca true. [-g $ File] zwraca fałsz.
-k plik Wykrywanie, czy plik ma lepką Sticky bit (bit), a jeśli tak, to zwraca true. [-k $ File] zwraca fałsz.
-p plik Wykrywanie, czy plik jest nazwany potok, a jeśli tak, to zwraca true. [-p $ File] zwraca fałsz.
-u plik Wykrywanie, czy plik ma bit SUID, a jeśli tak, to zwraca true. [-u $ File] zwraca fałsz.
-r plik Wykrywa, czy plik jest czytelny, a jeśli tak, to zwraca true. [-r $ Plik] zwraca true.
-w plik Wykrywanie, czy plik można zapisać, a jeśli tak, to zwraca true. [-w $ Plik] zwraca true.
-x plik Wykrywanie, czy plik jest wykonywalny, a jeśli tak, to zwraca true. [-x $ Plik] zwraca true.
-s plik Wykrywanie, czy plik jest pusty (rozmiar pliku jest większy niż 0), nie jest pusta return true. [-s $ File] zwraca true.
-e plik Wykrywanie pliku (w tym katalogu) istnieje, a jeśli tak, to zwraca true. [-e $ Plik] zwraca true.

Przykłady

Zmienna pliku wskazuje plik "/var/www/w3big/test.sh", jego rozmiar to 100 bajtów, z uprawnieniami RWX. Poniższy kod wykrywa różne atrybuty pliku:

#!/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

Wykonaj skrypt, wyjście jest w następujący sposób:

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