¿Cómo se agrega un número como argumento de línea de comando?

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 de read 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

  • ¡Ya veo! Lo entiendo ahora. Fue solo una cuestión de espacio. Realmente pensé demasiado en esto. ¡Gracias por la ayuda!
  • Tenga en cuenta que no ' t necesita utilizar el $ dentro de la expresión aritmética. Por ejemplo, intente esto: num=5;def=10;echo "sum = $((num + def))"

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *