Comment ajouter un nombre comme argument de ligne de commande?

Jessaie dajouter 1 chiffre à partir de la ligne de commande et un chiffre par défaut. Par exemple: lorsque lutilisateur saisit le nombre 50, le script ajoutera 10 (comme nombre par défaut).

./script 50 The sum of 50+ 10 is 60. 

Voici ce que jai jusquà présent.

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." 

La syntaxe est-elle erronée? Je ne sais pas si je « suis sur la bonne voie. Ai-je mal ajouté les chiffres? Dois-je utiliser awk à la place?

let sum = $default + $number 

Commentaires

  • Juste pour ajouter, au lieu de echo ing et ensuite lutilisation de read directement, vous pouvez taper: read -p 'Please enter a number: ' yournumber

Réponse

Les espaces sont à lorigine des erreurs.

Si vous voulez que lutilisateur entre le numéro quand il est invité comme « Veuillez entrer un nombre: », vous pouvez utiliser votre script avec quelques corrections comme:

#!/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." 

Vérifiez:

./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60. 

Si vous voulez nous euh pour saisir le nombre comme argument du script, vous pouvez utiliser le script ci-dessous:

#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum." 

Vérifier:

./temp.sh 50 The sum of 50 and 10 is 60. 

Commentaires

  • Pourquoi se donner la peine d’exécuter bc juste pour faire de l’arithmétique d’entiers simples?

Réponse

Vous ne devriez pas avoir despaces entre « default = 10 » & « sum = $ », également par défaut & nombre devrait avoir $ devant eux pour lire à partir des variables.

Le script fonctionne alors comme prévu pour moi, lorsquil est écrit comme ci-dessous;

#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum." 

Commentaires

  • Oh je vois! Je lai maintenant. Cétait juste un problème despacement. Jai vraiment trop réfléchi. Merci pour laide!
  • Notez que vous navez ' t besoin dutiliser le $ dans lexpression arithmétique. Par exemple, essayez ceci: num=5;def=10;echo "sum = $((num + def))"

Réponse

Cest le moyen le plus rapide de faire ce que vous demandez:

#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))." 

Résultat:

creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60. 

Commentaires

  • qui pourrait être dangereux – essayez ./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
  • @mikeserv Très précis, cependant pour lexercice I ' Je ne sais pas si cest un problème. Merci pour votre commentaire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *