tipo de expressão bash [closed]

3

Qual é a diferença entre o tipo de expressão bash? Eu estava tentando responder uma pergunta sobre como incrementar uma variável no bash, mas parece que algumas formas são praticamente as mesmas. Eu me pergunto se a maioria deles é apenas retrocompatibilidade?

Aqui está todo o caminho que encontrei, podemos incrementar uma variável. Ele funciona em todo o tipo de expressão bash que se segue, substituindo a expressão por um desses (exceto o último).

var=var+1
var=$((var+1))
var=$((var))+1
var=${var}+1
var=$var+1
var+=1
++var
var++
  • let expression
  • (( expression ))
  • $(( expressão ))
  • ' expression '

Emparelha para iniciar um novo ambiente bash, herdando o atual, mas não o afeta e não suporta ++var e var++ . Somente se invocar da seguinte forma: '(( expression )); echo $var'

Então, basicamente, $(( expression )) parece ser capaz de fazer todos os outros podem fazer, mas o último ( ' expression ' ). Isso afeta o ambiente local.

    
por kbenoit 05.11.2016 / 23:45

1 resposta

2

((expression))
              The  expression  is  evaluated  according to the rules described
              below under ARITHMETIC EVALUATION.  If the value of the  expres‐
              sion  is  non-zero, the return status is 0; otherwise the return
              status is 1.  This is exactly equivalent to let "expression".

       [[ expression ]]
              Return a status of 0 or 1 depending on  the  evaluation  of  the
              conditional  expression expression.  Expressions are composed of
              the primaries described  below  under  CONDITIONAL  EXPRESSIONS.
              Word  splitting  and pathname expansion are not performed on the
              words between the [[ and  ]];  tilde  expansion,  parameter  and
              variable  expansion, arithmetic expansion, command substitution,
              process substitution, and quote removal are  performed.   Condi‐
              tional operators such as -f must be unquoted to be recognized as
              primaries.

Isso cobre o básico sobre os tipos de expressões bash e é da página man bash. Para mais expressões aritméticas, consulte este link.

Fontes:

man bash

link

    
por Elder Geek 06.11.2016 / 00:06