Estoy tratando de agregar un número de la línea de comando y un número como predeterminado. Por ejemplo: cuando el usuario escribe el número 50, el script agregará 10 (como el número predeterminado).
./script 50 The sum of 50+ 10 is 60.
Esto es lo que tengo hasta ahora.
echo -n "Please enter a number: " read number default = 10 sum = $((default + number)) // this line does not seem to work echo "The sum of $number and 10 is $sum."
¿Tengo la sintaxis incorrecta? No estoy seguro de si estoy en el camino correcto. ¿Estoy agregando los números incorrectamente? ¿Debería usar awk en su lugar?
let sum = $default + $number
Comentarios
- Solo para agregar, en lugar de
echo
ing y luego el uso deread
directamente puede escribir:read -p 'Please enter a number: ' yournumber
Responder
Los espacios están causando los errores.
Si desea que el usuario ingrese el número cuando se le solicite como «Ingrese un número:», puede usar su secuencia de comandos con algunas correcciones como:
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Compruebe:
./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60.
Si desea que nosotros er para ingresar el número como argumento en el script, puede usar el siguiente script:
#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Verificar:
./temp.sh 50 The sum of 50 and 10 is 60.
Comentarios
- ¿Por qué molestarse en ejecutar bc solo para hacer aritmética simple de enteros?
Respuesta
No debe tener espacios entre «default = 10» & «sum = $», también predeterminado & el número debe tener $ antes que ellos para leer las variables.
El script entonces funciona como se esperaba para mí, cuando se escribe como a continuación;
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum."
Comentarios
Respuesta
Esta es la forma más rápida de hacer lo que está pidiendo:
#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))."
Salida:
creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60.
Comentarios
- que podría ser peligroso – intente
./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
- @mikeserv Muy preciso, sin embargo, para el ejercicio I ' No estoy seguro de si es una preocupación. Gracias por su comentario de todos modos.
$
dentro de la expresión aritmética. Por ejemplo, intente esto:num=5;def=10;echo "sum = $((num + def))"