Shell operadores básicos
Shell e outras linguagens de programação, suporta uma variedade de operadores, incluindo:
- operadores aritméticos
- Operadores relacionais
- operadores booleanos
- Operadores de String
- Arquivo operadores de teste
festança nativo não suporta operações matemáticas simples, mas pode ser alcançado através de outros comandos, como awk e expr, expr mais comumente usado.
expr é uma ferramenta de cálculo de expressão, usá-lo para completar a operação avaliador de expressão.
Por exemplo, para adicionar dois números (note o uso do `anti-aspas em vez de aspas simples '):
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
Executar o script, a saída é a seguinte:
两数之和为 : 4
Duas coisas a serem observados:
- Entre expressões e os operadores devem ter um espaço, por exemplo, 2 + 2 é errado, você deve escrever 2 + 2, o qual estamos familiarizados com a maioria das linguagens de programação não são os mesmos.
- expressão completa para ser `` contido, note que este personagem não é comumente usado entre aspas simples, a seguir a tecla Esc.
operadores aritméticos
A tabela a seguir lista os operadores aritméticos comuns, assumindo uma variável 10, a variável b é de 20:
operadores | explicação | Exemplos |
---|---|---|
+ | adição | `Expr $ resultado + $ B` é 30. |
- | subtração | `Expr $ a - resultado $ B` é de -10. |
* | multiplicação | `Expr $ a \ * resultados $ B` para 200. |
/ | divisão | `Expr $ b / $ result a` é 2. |
% | restante | `Expr $ b% resultado $ a` é 0. |
= | atribuição | a = $ b variável b irá atribuir o valor de um. |
== | Equal. Usado para comparar dois números, mesmo retorno verdadeiro. | [$ A == $ b] retorna false. |
! = | Não é igual. Usado para comparar dois números não são os mesmos retornos verdade. | [$ A! = $ B] retorna verdadeiro. |
Nota: A expressão condicional deve ser colocado entre colchetes, e incluir um espaço, por exemplo:[$ a == $ b] está errado e deve ser escrito como[$ a == $ b].
Exemplos
operadores aritméticos exemplos são os seguintes:
#!/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
Executar o script, a saída é a seguinte:
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b
Nota:
- sinal de multiplicação (*) deve ser adicionado na frente de uma barra invertida (\) para atingir multiplicação;
- se ... então ... fi é instruções condicionais, o follow-up será coberto.
- No shell MAC da sintaxe expr é: $ ((expressão)), onde a expressão "*" precisa escapar símbolo "\".
Operadores relacionais
Os operadores relacionais suportam apenas digitais, não suporta a corda, a menos que o valor da cadeia é um número.
A tabela a seguir lista os operadores relacionais comumente usados, assumindo uma variável 10, a variável b é de 20:
operadores | explicação | Exemplos |
---|---|---|
-eq | Detectar se dois números são iguais, retornos iguais verdadeiros. | [$ A -eq $ b] retorna false. |
-ne | Detectar se dois números são iguais, não retorna a igualdade verdadeira. | [$ A $ b -ne] retorna verdadeiro. |
-gt | A esquerda é maior do que o número detectados à direita, e em caso afirmativo, ele devolve verdadeiro. | [$ A $ b -gt] retorna false. |
-É | Número de detecção é inferior à direita da esquerda, e em caso afirmativo, ele devolve verdadeiro. | [$ A $ b -É] retorna verdadeiro. |
-ge | Detectar se o número é igual à direita do lado esquerdo da grande, e se assim for, ele retorna verdadeiro. | [$ A $ b -ge] retorna false. |
-le | Se o número de detecção de menos do que ou igual à direita para a esquerda, se for, ele devolve verdadeiro. | [$ A $ b -le] retorna verdadeiro. |
Exemplos
operadores relacionais exemplos são os seguintes:
#!/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
Executar o script, a saída é a seguinte:
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
operadores booleanos
A tabela a seguir lista os operadores booleanos normalmente usados, assumindo uma variável 10, a variável b é de 20:
operadores | explicação | Exemplos |
---|---|---|
! | Non-operação, a expressão é verdadeira retornos falsos, caso contrário, ele retorna true. | [! Falso] retorna verdadeiro. |
-o | OR operação, há uma verdadeira expressão retorna true. | [$ A -É 20 -o $ b -gt 100] retorna verdadeiro. |
-a | E as operações, as duas expressões são verdadeiras antes de retornar verdadeiro. | [$ A -É 20 -a $ b -gt 100] retorna false. |
Exemplos
Operadores Booleanos exemplos são os seguintes:
#!/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
Executar o script, a saída é a seguinte:
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
Operadores lógicos
O que se segue descreve o operador lógico Shell, assumindo uma variável 10, a variável de b é de 20:
operadores | explicação | Exemplos |
---|---|---|
&& | E lógico | [[$ A -É 100 && $ b -gt 100]] retorna falso |
|| | OU lógico | [[$ A -É 100 || $ b -gt 100]] retorna true |
Exemplos
Exemplos de operadores lógicos são como se segue:
#!/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
Executar o script, a saída é a seguinte:
返回 false 返回 true
Operadores de String
A tabela seguinte lista comumente usados operadores de string, assumidos como uma variável "abc", a variável b é "efg":
operadores | explicação | Exemplos |
---|---|---|
= | Detectando duas seqüências são iguais, retornos iguais verdadeiros. | [$ A = $ b] retorna false. |
! = | Detectar se duas seqüências são iguais, não retorna a igualdade verdadeira. | [$ A! = $ B] retorna verdadeiro. |
-z | Detectar se o comprimento da corda é de 0 para 0 retorna verdadeiro. | [-z $ A] retorna false. |
-n | Detectar se o comprimento da corda é 0, diferente de zero return true. | [-n $ A] retorna verdadeiro. |
str | Detectar se a corda está vazio, não vazio return true. | [$ A] retorna verdadeiro. |
Exemplos
Operadores de String exemplos são os seguintes:
#!/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
Executar o script, a saída é a seguinte:
abc = efg: a 不等于 b abc != efg : a 不等于 b -z abc : 字符串长度不为 0 -n abc : 字符串长度不为 0 abc : 字符串不为空
Arquivo operadores de teste
operador de teste de arquivo é usado para detectar uma variedade de atributos de arquivo Unix.
Atributo de detecção descrito como se segue:
operadores | explicação | Exemplos |
---|---|---|
arquivo -b | Detectar se o arquivo é um arquivo de dispositivo de bloco, e se assim for, ele retorna true. | [-b $ File] retorna false. |
-c arquivo | Detectar se o arquivo é um arquivo de dispositivo de caractere, e em caso afirmativo, ele retorna true. | [-c $ File] retorna false. |
arquivo -d | Detectar se o arquivo é um diretório, e se assim for, ele retorna true. | [-d $ Arquivo] retorna false. |
-f arquivo | Detectar se o arquivo é um arquivo comum (nem arquivo de diretório ou dispositivo) e, em caso afirmativo, ele retorna true. | [-f $ File] retorna verdadeiro. |
arquivo -g | Detectar se um arquivo tem o bit SGID, e em caso afirmativo, ele retorna true. | [-g $ File] retorna false. |
arquivo -k | Detectar se um arquivo tem o sticky bit (Bit Sticky), e em caso afirmativo, ele retorna true. | [K $ File] retorna false. |
arquivo -p | Detectar se o arquivo é um pipe nomeado, e em caso afirmativo, ele retorna true. | [-p $ File] retorna false. |
arquivo -u | Detectar se um arquivo tem o bit SUID, e em caso afirmativo, ele retorna true. | [U $ File] retorna false. |
arquivo -r | Ele detecta se um arquivo é legível, e em caso afirmativo, ele retorna true. | [-r $ File] retorna verdadeiro. |
arquivo -w | Detectar se o arquivo pode ser escrito, e em caso afirmativo, ele retorna true. | [-w $ File] retorna verdadeiro. |
arquivo -x | Detectar se o arquivo é executável, e em caso afirmativo, ele retorna true. | [-x $ File] retorna verdadeiro. |
arquivo -s | Detectar se o arquivo está vazio (o tamanho do arquivo é maior que 0), não está vazio return true. | [-s $ File] retorna verdadeiro. |
arquivo -e | Detectar arquivo (incluindo diretório) existe, e em caso afirmativo, ele retorna true. | [-e $ File] retorna verdadeiro. |
Exemplos
arquivo variável indica o arquivo "/var/www/w3big/test.sh", o seu tamanho é de 100 bytes, com permissões rwx. O código a seguir irá detectar vários atributos do arquivo:#!/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
Executar o script, a saída é a seguinte:
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在