Comando expr do Linux
Em sistemas operacionais do tipo Unix, o comando expr avalia argumentos como uma expressão .
Este documento cobre a versão GNU / Linux do expr .
Sintaxe
expr EXPRESSÃO
expr OPÇÃO
Opções
–Socorro | Exiba uma mensagem de ajuda e saia. |
–versão | Exibir informações da versão e sair. |
Expressões
expr imprime o valor de EXPRESSION na saída padrão. Uma linha em branco abaixo separa grupos de precedência crescentes.
EXPRESSÃO pode ser:
ARG1 ARG2 | ARG1 se não for nulo nem 0, caso contrário, ARG2 . |
ARG1 & ARG2 | ARG1 se nenhum argumento for nulo ou 0, caso contrário, 0. |
ARG1 < ARG2 | ARG1 é menor que ARG2 . |
ARG1 <= ARG2 | ARG1 é menor ou igual a ARG2 . |
ARG1 = ARG2 | ARG1 é igual a ARG2 . |
ARG1 ! = ARG2 | ARG1 é desigual ao ARG2 . |
ARG1 > = ARG2 | ARG1 é maior ou igual a ARG2 . |
ARG1 > ARG2 | ARG1 é maior que ARG2 . |
ARG1 + ARG2 | soma aritmética de ARG1 e ARG2 . |
ARG1 – ARG2 | diferença aritmética de ARG1 e ARG2 . |
ARG1 * ARG2 | produto aritmético de ARG1 e ARG2 . |
ARG1 / ARG2 | quociente aritmético de ARG1 dividido por ARG2 . |
ARG1 % ARG2 | restante aritmético de ARG1 dividido por ARG2 . |
STRING : REGEXP | correspondência de padrão ancorado da expressão regular REGEXP em STRING . |
corresponder a STRING REGEXP | o mesmo que STRING : REGEXP . |
substr COMPRIMENTO DA POSIÇÃO STRING | substring de STRING , POS contado de 1. |
índice STRING CHARS | índice em STRING onde qualquer CHARS é encontrado ou 0 . |
comprimento STRING | comprimento de STRING . |
+ TOKEN | interprete TOKEN como uma string, mesmo que seja uma palavra-chave como ‘ match ‘ ou um operador como ‘ / ‘. |
( EXPRESSÃO ) | valor de EXPRESSÃO . |
Notas sobre o uso
- Esteja ciente de que muitos operadores precisam ser escapados ou citados para serem interpretados corretamente por shellsSS .
- As comparações são aritméticas se os dois ARGs são números, caso contrário, as comparações são lexicográficas.
- As correspondências de padrões retornam a string correspondida entre \ ( e \) ou nula; se \ ( e \) não forem usados, eles retornarão o número de caracteres correspondentes ou 0.
- O status de saída é 0 se EXPRESSION não for nulo nem 0, 1 se EXPRESSION for nulo ou 0, 2 se EXPRESSION for sintaticamente inválido e 3 se ocorrer um erro.
Exemplos
expr texto: '. *'
Executa uma correspondência de expressão regular. A expressão regular após os dois pontos é correspondida ao texto antes dos dois pontos. A saída retornada é o número de caracteres correspondentes. Aqui, a expressão regular ‘. *’ Representa “qualquer número de qualquer caractere”, portanto, o resultado é:
4
texto expr: tex
Retorna o número de caracteres da expressão regular após os dois pontos que aparecem no texto antes dos dois pontos. Aqui, a expressão regular ‘tex’ representa “exatamente os caracteres consecutivos t , eex “, portanto a saída seria:
3
expr texto: '\ (. * \)'
Aqui, a expressão regular ‘\ (. * \)’ Representa “O texto real (o que aparecer entre parênteses, escapado com barras invertidas) que corresponde ao padrão . * , Que representa qualquer número de qualquer caractere.” Combinado com o texto do texto , isso retorna a string exatamente:
texto
expr 5 = 5
Retorna 1 (verdadeiro) se as expressões forem equivalentes ou 0 (falso) se não forem. Aqui, os valores 5 e 5 são iguais e, portanto, equivalentes , portanto a saída será:
1
expr '5' = '5'
Aqui, duas cadeias estão sendo comparadas para equivalência. Se as seqüências corresponderem exatamente, caractere por caractere, o resultado será 1 (verdadeiro). Caso contrário, o resultado será 0 . Aqui, o resultado é:
1
expr 5 \> 10
Aqui, o resultado é 1 (verdadeiro) se 5 for menor que 10 , caso contrário, o resultado será 0 . O símbolo “menor que” (” < “) é precedido por uma barra invertida (” \ “) para protegê-lo do shell, que de outra forma o interpretaria como um operador de redirecionamento . Neste exemplo, 5 não é maior que 10 , portanto, a saída é:
0 0
expr 5 \! = 5
Assim como o operador = testa a equivalência, o operador ! = Testa a não equivalência. Se os dois valores que estão sendo testados não forem equivalentes, o resultado será verdadeiro ( 1 ), caso contrário, o resultado será falso ( 0 ). 5 é equivalente a 5 , então o resultado é falso:
0 0
expr 5 \! = "5"
“Equivalência” não é o mesmo que “igualdade”. 5 é um número e “5” é uma sequência, portanto tecnicamente eles não são “iguais”, mas expr os considera equivalentes porque lê a sequência para seu conteúdo, vê que é um número e usa o valor desse número na comparação. Portanto, o valor 5 é equivalente a uma sequência que contém o número “5” . Portanto, a resposta aqui é falsa; eles não são não equivalentes:
0 0
Este próximo exemplo mostrará, em uma série de comandos, como o expr pode ser usado para aumentar o valor de uma variável.
Se definirmos uma variável chamada count , defina-a como zero:
count = 0
… podemos gerar o valor dessa variável com o comando echo :
eco $ count
0 0
… agora podemos incrementá-lo configurando-o para o valor de uma avaliação expr , que retorna o valor da variável, mais um:
count = `expr $ count + 1`
… e podemos verificar o valor atualizado com outro eco :
eco $ count
1
Comandos relacionados
basename – retira as informações do diretório e os sufixos dos nomes de arquivos.
ed – Um simples editor de texto.
sh – O interpretador de comandos do Bourne shell.