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 deread
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
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.
$
dans lexpression arithmétique. Par exemple, essayez ceci:num=5;def=10;echo "sum = $((num + def))"