Aritmética en Bash

Como engadir cálculos a un script Bash

Aínda que Bash é un linguaxe de script, ten case todas as capacidades dunha linguaxe de programación de propósito xeral. Isto inclúe funcións aritméticas. Existen varias opcións de sintaxe que pode usar para evocar a avaliación aritmética dunha expresión. Quizais o máis lexible sexa o comando de deixar . Por exemplo

deixe "m = 4 * 1024"

computará 4 veces 1024 e asignará o resultado á variable "m".

Pode imprimir o resultado engadindo unha declaración de eco :

deixe "m = 4 * 1024" eco $ m

Podes probar isto desde a liña de comandos introducindo o seguinte código:

deixe "m = 4 * 1024"; eco $ m

Tamén pode crear un ficheiro que conteña os comandos Bash, en cuxo caso debería engadir unha liña na parte superior do ficheiro que especifica o programa que se supón que debe executar o código. Por exemplo:

#! / bin / bash deixe "m = 4 * 1024" eco $ m

asumindo que o executable Bash está situado en / bin / bash . Tamén cómpre establecer os permisos do ficheiro de script para que sexa executable. Supoñendo que o nome do ficheiro de script é script1.sh , pode establecer os permisos para executar o ficheiro co comando:

chmod 777 script1.sh

Logo podes executalo co comando:

./script1.sh

As operacións aritméticas dispoñibles son similares ás de linguaxes de programación estándar como Java e C. Ademais da multiplicación, como se ilustra arriba, usa ademais:

deixe "m = a + 7"

ou resta:

deixe "m = a - 7"

ou división:

deixe "m = a / 2"

ou módulo (o resto despois dunha división enteira):

deixe "m = un% 100"

Cando se aplica unha operación á mesma variable á que se asigna o resultado pode usar os operadores de asignación aritmética estándar, tamén coñecidos como operadores de asignación composta. Por exemplo, para engadir, temos:

deixe "m + = 15"

que equivale a "m = m + 15". Para a resta temos:

deixe "m - = 3"

o que equivale a "m = m - 3". Para división temos:

deixe "m / = 5"

o que equivale a "m = m / 5". E para módulo, temos:

deixe "m% = 10"

o que equivale a "m = m% 10".

Ademais, pode usar os operadores de incremento e redución :

deixe "m ++"

É equivalente a "m = m + 1". E

deixe "m--"

É equivalente a "m = m - 1".

E despois está o operador ternario de "punto de referencia", que retorna un dos dous valores segundo se a condición especificada é verdadeira ou falsa. Por exemplo

deixe "k = (m <9)? 0: 1"

O lado dereito desta declaración atribúese a "0" se a variable "m" é menor que 9. Se non, valórase a 1. Isto significa que a variable "k" está asignada "0" se "m" é menor. de 9 e "1" de outra forma.

A forma xeral do operador de colon de interrogación é:

condición? value-if-true: value-if-false

Aritmética de punto flotante en Bash

O operador let só funciona para aritmética enteira. Para aritmética de punto flotante pódese usar, por exemplo, a calculadora GNU bc como se ilustra neste exemplo:

echo "32.0 + 1.4" | bc

O operador "pipe" "|" pasa a expresión aritmética "32.0 + 1.4" á calculadora bc, que devolve o número real. O comando echo imprime o resultado á saída estándar.

Sintaxe alternativa para aritmética

Backticks (voltar citas simples) pode usarse para avaliar unha expresión aritmética como neste exemplo:

eco `expr $ m + 18`

Isto engadirá 18 ao valor da variable "m" e despois imprimirá o resultado.

Para asignar o valor de cálculo a unha variable pode usar o sinal igual sen espazos en torno a el:

m = `expr $ m + 18`

Outra forma de avaliar as expresións aritméticas é empregar dous parénteses. Por exemplo:

((m * = 4))

Isto cuadruplicará o valor da variable "m".

Ademais da avaliación aritmética, o shell Bash proporciona outras construcións de programación, como for-loops , while-loops , condicionales e funcións e subrutinas .