operatori di base Shell
Shell e altri linguaggi di programmazione, supporta una vasta gamma di operatori, tra cui:
- Gli operatori aritmetici
- Operatori relazionali
- operatori booleani
- Operatori di stringa
- File Operatori di prova
bash nativo non supporta semplici operazioni matematiche, ma può essere raggiunto attraverso altri comandi, come awk e espr, espr più comunemente usato.
espr è uno strumento di calcolo espressione, utilizzarlo per completare l'operazione di espressione valutatore.
Ad esempio, per aggiungere due numeri (notare l'uso di anti-citazione `segna invece di virgolette singole '):
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
Eseguire lo script, l'output è il seguente:
两数之和为 : 4
Due cose da notare:
- Tra le espressioni e gli operatori devono avere uno spazio, ad esempio, 2 + 2 è sbagliato, è necessario scrivere 2 + 2, che ci sono familiari con la maggior parte dei linguaggi di programmazione non sono gli stessi.
- espressione completa di essere `` contenuta, si noti che questo personaggio non è comunemente usato tra virgolette singole, sotto il tasto Esc.
Gli operatori aritmetici
Nella tabella seguente sono elencati gli operatori aritmetici comuni, assumendo una variabile 10, la variabile b è 20:
operatori | spiegazione | Esempi |
---|---|---|
+ | aggiunta | `Expr $ a seguito + $ b` è 30. |
- | sottrazione | `Expr $ a - $ risultato b` è -10. |
* | moltiplicazione | `Expr $ a \ * risultati $ B` per 200. |
/ | divisione | `Expr $ b / $ risultato a` è 2. |
% | resto | `Expr $ b% risultato $ a` è 0. |
= | assegnazione | a = $ b variabile b assegnerà il valore di una. |
== | Equal. Utilizzato per confrontare due numeri, stesso rendimento vero. | [$ A == $ b] restituisce false. |
! = | Non uguale. Utilizzato per confrontare due numeri non sono gli stessi ritorni vero. | [$ A! = $ B] restituisce true. |
Nota: L'espressione condizionale dovrebbe essere collocato tra parentesi quadre, e comprendono uno spazio, ad esempio:[$ a == $ b] è sbagliato e deve essere scritto come[$ a == $ b].
Esempi
operatori aritmetici esempi sono i seguenti:
#!/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
Eseguire lo script, l'output è il seguente:
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b
Nota:
- segno di moltiplicazione (*) deve essere aggiunta prima una barra rovesciata (\) per ottenere la moltiplicazione
- if ... then ... fi è istruzioni condizionali, il follow-up sarà coperto.
- Nella shell MAC della sintassi espr è: $ ((espressione)), dove l'espressione "*" bisogno di fuggire simbolo "\".
Operatori relazionali
Gli operatori relazionali unico supporto digitale, non supporta la corda, a meno che il valore della stringa è un numero.
Nella tabella seguente sono elencati gli operatori relazionali comunemente utilizzate, assumendo una variabile 10, la variabile b è 20:
operatori | spiegazione | Esempi |
---|---|---|
eq | Rilevare se due numeri sono uguali, ritorna uguale a True. | [$ A eq $ b] restituisce false. |
-ne | Rilevare se due numeri sono uguali, non restituisce pari vero. | [$ A $ -ne b] restituisce true. |
-gt | La sinistra è maggiore del numero rilevato a destra, e se è così, restituisce true. | [$ A $ -gt b] restituisce false. |
-LT | rilevamento numero è inferiore destra della sinistra, e se è così, restituisce true. | [$ A $ -lt b] restituisce true. |
-GE | Rilevare se il numero è uguale alla destra del lato sinistro della grande, e se è così, restituisce true. | [$ A $ -ge b] restituisce false. |
-le | Se il numero di rilevamento inferiore o uguale a destra a sinistra, se è, restituisce true. | [$ A $ -le b] restituisce true. |
Esempi
Operatori relazionali esempi sono i seguenti:
#!/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
Eseguire lo script, l'output è il seguente:
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
operatori booleani
Nella tabella seguente sono elencati gli operatori booleani comunemente utilizzati, assumendo una variabile 10, la variabile b è 20:
operatori | spiegazione | Esempi |
---|---|---|
! | Non funzionamento, l'espressione è true restituisce falso, altrimenti restituisce vero. | [! Falso] restituisce true. |
-o | OR, vi è una vera espressione restituisce true. | [$ A -lt 20 -o $ b -gt 100] restituisce true. |
-a | E le operazioni, le due espressioni sono vere, prima di tornare vero. | [$ A -lt 20 -a $ b -gt 100] restituisce false. |
Esempi
operatori booleani esempi sono i seguenti:
#!/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
Eseguire lo script, l'output è il seguente:
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
Operatori logici
Il seguente descrive la logica operatore Shell, assumendo una variabile 10, la variabile b è 20:
operatori | spiegazione | Esempi |
---|---|---|
&& | AND logico | [[$ A -lt 100 && $ b -gt 100]] restituisce false |
|| | OR logico | [[$ A -lt 100 || $ b -gt 100]] Restituisce true |
Esempi
Esempi di operatori logici sono i seguenti:
#!/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
Eseguire lo script, l'output è il seguente:
返回 false 返回 true
Operatori di stringa
La tabella seguente elenca comunemente utilizzati operatori di stringa, assunte come una variabile "abc", la variabile b è "EFG":
operatori | spiegazione | Esempi |
---|---|---|
= | Rilevamento due stringhe sono uguali, ritorna uguale a True. | [$ A = $ b] restituisce false. |
! = | Rilevare se due stringhe sono uguali, non restituisce pari vero. | [$ A! = $ B] restituisce true. |
-z | Rilevare se la lunghezza della stringa è 0 per 0 restituisce vero. | [-z $ A] restituisce false. |
-n | Rilevare se la lunghezza della stringa è 0, non zero return true. | [-n $ A] restituisce true. |
str | Rilevare se la stringa è vuota, non ritorno vuoto vero. | [$ A] restituisce true. |
Esempi
Operatori stringa esempi sono i seguenti:
#!/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
Eseguire lo script, l'output è il seguente:
abc = efg: a 不等于 b abc != efg : a 不等于 b -z abc : 字符串长度不为 0 -n abc : 字符串长度不为 0 abc : 字符串不为空
File Operatori di prova
operatore di verifica file è utilizzato per rilevare una varietà di attributi di file Unix.
Abilità rilevamento descritto come segue:
operatori | spiegazione | Esempi |
---|---|---|
file di -b | Rilevare se il file è un file di dispositivo a blocchi, e in caso affermativo, restituisce vero. | [-b $ File] restituisce false. |
-c file | Rilevare se il file è un file di dispositivo a caratteri, e in caso affermativo, restituisce vero. | [-c $ File] restituisce false. |
-d file | Rilevare se il file è una directory, e in caso affermativo, restituisce vero. | [-d $ File] restituisce false. |
-f file | Rilevare se il file è un file regolare (né file di directory o dispositivo), e in caso affermativo, restituisce vero. | [-f $ File] restituisce true. |
file di -g | Rilevare se un file ha il bit SGID, e in caso affermativo, restituisce vero. | [-g $ File] restituisce false. |
file di -k | Rilevare se un file ha lo sticky bit (Sticky Bit), e in caso affermativo, si restituisce vero. | [-k $ File] restituisce false. |
-p file | Rilevare se il file è una pipe con nome, e in caso affermativo, restituisce vero. | [-p $ File] restituisce false. |
file di -u | Rilevare se un file ha il bit SUID, e in caso affermativo, restituisce vero. | [-u $ File] restituisce false. |
-r file | Si rileva se un file è leggibile, e in caso affermativo, restituisce vero. | [-r $ File] restituisce true. |
file di -w | Rilevare se il file può essere scritto, e in caso affermativo, restituisce vero. | [-w $ File] restituisce true. |
-x file | Rilevare se il file è eseguibile, e in caso affermativo, restituisce vero. | [-x $ File] restituisce true. |
file di -s | Rilevare se il file è vuoto (la dimensione del file è superiore a 0), non ritorno vuoto vero. | [-s $ File] restituisce true. |
-e file | Rileva file (incluse directory) esiste, e in caso affermativo, restituisce vero. | [-e $ File] restituisce true. |
Esempi
file di variabile indica il file "/var/www/w3big/test.sh", le sue dimensioni sono di 100 byte, con i permessi rwx. Il seguente codice in grado di rilevare i vari attributi del file:#!/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
Eseguire lo script, l'output è il seguente:
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在