scripts script programacion pasar parametros español ejemplos comandos linux bash shell variables division

script - ¿Cómo puedo hacer la división con variables en un shell de Linux?



scripts bash ejemplos (5)

Hacer referencia a las variables Bash requiere la expansión de parámetros

El shell predeterminado en la mayoría de las distribuciones de Linux es Bash. En Bash, las variables deben usar un prefijo de signo de dólar para la expansión de parámetros . Por ejemplo:

x=20 y=5 expr $x / $y

Por supuesto, Bash también tiene operadores aritméticos y una sintaxis de expansión aritmética especial, por lo que no es necesario invocar el binario expr como un proceso separado. Puedes dejar que el caparazón haga todo el trabajo de esta manera:

x=20; y=5 echo $((x / y))

Cuando ejecuto comandos en mi shell como a continuación, devuelve un error de expr: non-integer argument . ¿Alguien puede explicarme esto?

$ x=20 $ y=5 $ expr x / y expr: non-integer argument


¿Por qué no usar let? Lo encuentro mucho más fácil. Aquí hay un ejemplo que puede serle útil:

start=`date +%s` # ... do something that takes a while ... sleep 71 end=`date +%s` let deltatime=end-start let hours=deltatime/3600 let minutes=(deltatime/60)%60 let seconds=deltatime%60 printf "Time spent: %d:%02d:%02d/n" $hours $minutes $seconds


Creo que ya fue mencionado en otros hilos:

calc(){ awk "BEGIN { print "$*" }"; }

entonces simplemente puedes escribir:

calc 7.5/3.2 2.34375

En tu caso será:

x=20; y=3; calc $x/$y

o si lo prefiere, agregue esto como una secuencia de comandos separada y póngalo disponible en $ PATH para que siempre lo tenga en su shell local:

#!/bin/bash calc(){ awk "BEGIN { print $* }"; }


Esas variables son variables de shell. Para expandirlos como parámetros a otro programa ( es decir, expr ), debe usar el prefijo $ :

expr $x / $y

La razón por la que se quejó es porque creía que intentabas operar con caracteres alfabéticos ( es decir, no enteros)

Si está utilizando el shell Bash, puede lograr el mismo resultado utilizando la sintaxis de expresión:

echo $((x / y))

O:

z=$((x / y)) echo $z


Puede usar la sustitución de comandos de la siguiente manera:

z="$(expr $x / $y)" echo "$z"

Asegúrese de espacios como se menciona arriba