scripts - variables en bash



¿Cómo hago si la aritmética de la declaración en bash? (3)

Esto podría funcionar para usted:

((a%4==0)) && echo "$a is divisible by 4" || echo "$a is not divisible by 4"

o más sucintamente:

((a%4)) && echo "$a is not divisible by 4" || echo "$a is divisible by 4"

https://code.i-harness.com

Quiero hacer algo como esto:

if [ $1 % 4 == 0 ]; then
...

Pero esto no funciona.

¿Qué debo hacer en su lugar?



read n
if ! ((n % 4)); then
    echo "$n divisible by 4."
fi

El operador (( )) evalúa expresiones como C aritmética y tiene un retorno booleano.

Por lo tanto, (( 0 )) es falso y (( 1 )) es verdadero. [1]

El operador $(( )) también expande C expresiones aritméticas, pero en lugar de devolver verdadero / falso, devuelve el valor en su lugar. Debido a esto, puede probar el resultado si $(( )) de esta manera: [2]

[[ $(( n % 4 )) == 0 ]]

Pero esto es equivalente a: if (function() == false) . Por lo tanto, la prueba más simple y más idiomática es:

! (( n % 4 ))

[1]: Modern bash maneja los números hasta el tamaño intmax_t su máquina.

[2]: tenga en cuenta que puede colocar $ dentro de (( )) , ya que desreferencia variables dentro.





scripting