O shell possui os principais operadores utilizados em linguagem de programação semelhantes ao shell como C, Perl, Php com exceção dos operadores de incremento (++ e – -). Abaixo seguem os operadores aritméticos, comparação, lógicos e bit-a-bit usados pelo shell para a criação de variáveis, operações aritméticas, comparações e teste lógicos.
Operadores aritméticos
Operadores Aritméticos | |
---|---|
+ |
Adição |
- |
Subtração |
* |
Multiplicação |
/ |
Divisão |
% |
Módulo |
** |
Exponenciação |
OBS: Para usar o operador de multiplicação, é necessário usar uma barra invertida antes do sinal de multiplicação \*, usando o comando de expressão aritméticas expr ou a expansão aritimética $( ( expressão ) ).
Exemplos:
echo `expr 3 + 2`
echo $( (3+2) )
echo `expr 3 + 2 \* 3`
echo $( (3+2*3) )
echo `expr $( (3 +2) ) \* 3`
echo $( (3+2*3) )
echo `expr 3 % 2`
echo $((3 % 2))
VL=5
echo $(($VL**2))
Operadores Relacionais
Operadores Relacionais | |
---|---|
== |
Igual |
!= |
Diferente |
> |
Maior |
>= |
Maior ou Igual |
< |
Menor |
<= |
Menor ou Igual |
Exemplos:
Comparação matemática | Comparação em Script |
5 == 6 | If [ 5 -eq 6 ] |
5 != 6 | If [ 5 -ne 6 ] |
5 < 6 | If [ 5 -lt 6 ] |
5 <= 6 | If [ 5 -le 6 ] |
5 > 6 | If [ 5 -gt 6 ] |
5 >= 6 | If [ 5 -ge 6 ] |
Operadores Lógicos
Operadores Lógicos | |
---|---|
&& |
E lógico (AND) |
|| |
OU lógico (OR) |
&& – Verdadeiro se tanto a e b são verdadeiros ao mesmo tempo
| | – Verdadeiro se a ou b são verdadeiros
Exemplos:
&& (e)
| | (ou)
! (não) – Verdadeiro se a não é verdadeiro
Operadores bit-a-bit
Para efetuar uma operação bit-a-bit é preciso usar a calculadora do próprio sistema operacional em modo científico, ou então, fazer as conversões de decimal em binário manualmente. Como exemplo abaixo:
https://gnulinuxbr.wordpress.com/2010/01/23/conversao-de-sistemas-de-numeracao/
Operadores de BIT | |
---|---|
<< |
Deslocamento à esquerda |
>> |
Deslocamento à direita |
& |
E de bit (AND) |
| |
OU de bit (OR) |
^ |
OU exclusivo de bit (XOR) |
~ |
Negação de bit |
! |
NÃO de bit (NOT) |
Exemplos:
a & b – E – Os bits que estão ativos tanto em a quanto em b são ativados.
a | b – OU – Os bits que estão ativos em a ou em b são ativados.
a ^ b – XOR – Os bits que estão ativos em a ou em b, mas não em ambos, são ativados.
~ a – NÃO – Os bits que estão ativos em a não são ativados, e vice-versa.
a << b – Deslocamento à esquerda – Desloca os bits de a para b passos para a esquerda.
a >> b – Deslocamento à direita – Desloca os bits de a para b passos para a direita.
A operação lógica AND significa operação lógica E e é representada por &. Este operador retorna 1 para cada posição em que ambos os valores comparados possuírem 1 ao mesmo tempo na mesma posição de bit. Se um dos valores possuir um 0 (zero) na mesma posição de bit, o perador retornará o valor 0.
Exemplo 1:
valor1 | operador | valor2 | resultado |
0 | AND(&) | 0 | 0 |
0 | AND(&) | 1 | 0 |
1 | AND(&) | 1 | 1 |
1 | AND(&) | 0 | 0 |
Exemplo 2:
valor decimal | valor binário |
20 | 10100 |
15 | 1111 |
em Binário | 100 |
em Decimal | 4 |
Exemplo 3:
Operador bit-a-bit OR (|)
A operação lógica OR significa operação lógica OU e é representada pela barra em pé |. Este operador retorna 1 para cada posição em que algum dos valores comparados possuírem um 1 na mesma posição de bit. Se os dois valores tiverem um 0 (zero) na mesma posição de bit, o operador retornará o valor 0. Se os dois valores tiverem um 1 (um) na mesma posição de bit, o operador retornará o valor 1.
Eemplo 1:
valor1 | operador | valor2 | resultado |
0 | OR(|) | 0 | 0 |
0 | OR(|) | 1 | 1 |
1 | OR(|) | 0 | 1 |
1 | OR(|) | 1 | 1 |
Exemplo 2:
valor decimal | valor binário |
6 | 110 |
5 | 101 |
em Binário | 111 |
em Decimal | 7 |
valor decimal | valor binário |
20 | 10100 |
15 | 1111 |
em Binário | 100 |
em Decimal | 4 |
Exemplo 3:
Operador bit-a-bit XOR (^)
A operação lógica XOR significa operação lógica OU EXCLUSIVO e é representada por ^. Este operador retorna 1 para cada posição em que algum dos valores comparados possuírem um 1 na mesma posição de bit. Se ambos valores tiverem 0 (zero) ou um (1) na mesma posição de bit, o operador retornará o valor 0.
Exemplo 1:
valor1 | operador | valor2 | resultado |
0 | XOR(^) | 0 | 0 |
0 | XOR(^) | 1 | 1 |
1 | XOR(^) | 0 | 1 |
1 | XOR(^) | 1 | 0 |
Exemplo 2:
valor decimal | valor binário |
6 | 110 |
4 | 100 |
em Binário | 10 |
em Decimal | 2 |
Exemplo 3:
Operador bit-a-bit NOT (~)
A operação lógica NOT significa operação lógica NÃO e é representada por ~. Este operador inverte os bits comparados onde for 0 ele põe 1 e onde for 1 ele põe 0. Este operador deve ser usado somente com expressões usando outros operadores bit-a-bit como AND(&), OR(|) ou XOR(^).
Exemplo 1:
valor decimal | valor binário |
5 | 1O1 |
em Binário | O1O |
Em Decimal | 2 |
Exemplo 2:
O exemplo abaixo mostra o operador bit-a-bit NOT ~, onde estou usando duas variáveis A e B, e na variável B estou usando o NOT ~.
Operadores de deslocamento de bit-a-bit (<<) (>>)
Existem dois operadores de deslocamento bit-a-bit onde são descritos abaixo:
• deslocamento bit-a-bit para a esquerda nos quais deslocado o número de casas indicadas para a esquerda após o operador e representado por <<.
• deslocamento bit-a-bit para a direita, nos quais deslocado o número de casas indicadas para a direita após o operador e representado por >>.
Exemplo 1:
VL Decimal | VL Binário | Resultado |
6 | 0000 0110 | 6 |
Deslocando 4 casas para a esquerda <<4 | 0110 0000 | 96 |
Deslocando 1 casas para a direita >>1 | 0000 0011 | 3 |
No exemplo acima é utilizado o número 6 que em binário é 0000 0110, onde é deslocado 4 casas para a esquerda, retornando o número 96 que em binário 0110 0000 e em seguida é deslocado 1 casa par a direita, retornando o número 3 que em binário 0000 0011.
Exemplo 2:
Abaixo segue uma tabela verdade resumida com os casos anteriores.
valor1 | Valor 2 | AND | OR | XOR |
V | V | V | V | F |
V | F | F | V | V |
Muito bom! Ajudou muito
Obrigado.