Adicionando no comando de variável básica

2

Os comandos são ..

t=20
s=$t+30

Eu quero que a saída de echo $s seja 50 , mas não consigo descobrir como escrever o comando s= para que ele execute a adição.

    
por Joe 11.03.2017 / 00:28

3 respostas

2

As variáveis do shell são strings por padrão. Alguns shells suportam outros tipos de variáveis, mas você precisa informar ao shell.

Em qualquer shell no estilo POSIX ( sh exceto em antigos sistemas Unix, dash, bash, ksh, zsh, etc.), você pode usar expansão aritmética para dizer ao shell para realizar a aritmética ao analisar a atribuição de variáveis.

t=20
s=$((t+30))
echo "$s"

(As aspas duplas não são necessárias aqui, mas eles são um bom hábito para pegar .)

Também é possível armazenar o texto da expressão para avaliar e realizar a aritmética ao imprimi-lo.

t=20
s=$((t+30))
echo "expression: $s; evaluated: $(($s))"

Mas tenha cuidado ao usar substituições explícitas de variáveis dentro de expressões aritméticas: elas são substituídas como texto, não como subexpressões aritméticas, então a precedência do operador pode parecer estranha.

echo "$(($s*2))" # equivalent to $((t+30*2)), so prints 80, not 100

No bash, ksh ou zsh, você pode usar let ou ((…)) para realizar a aritmética.

t=20
let s=t+30
echo "$s"

ou

((t = 20))
((s = t + 30))
echo "$s"

ou suas variações.

Outra possibilidade no bash, ksh ou zsh é usar o typeset builtin para declarar a variável como um inteiro. Então, toda atribuição a ele realiza avaliação aritmética.

typeset -i s t
t=20
s=t+30
echo "$s"
    
por 11.03.2017 / 02:07
1

Aqui está uma maneira:

t=20  

s=$((t+30))  # or s="$((t+30))"

echo "$s"
    
por 11.03.2017 / 00:38
0

Você pode realizar aritmética usando o comando expr , por exemplo:

t=20
s=$(expr "$t" + 30)
echo "$s"

digite man expr no seu terminal para mais informações.

    
por 11.03.2017 / 03:09