Ik probeer 1 nummer toe te voegen vanaf de opdrachtregel en een nummer als een standaardnummer. Bijvoorbeeld: wanneer de gebruiker het nummer 50 intypt, script voegt 10 toe (als het standaardnummer).
./script 50 The sum of 50+ 10 is 60.
Dit is wat ik tot nu toe heb.
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."
Heb ik de syntaxis verkeerd? Ik “weet niet zeker of ik” op de goede weg ben. Voeg ik de cijfers verkeerd toe? Moet ik in plaats daarvan awk gebruiken?
let sum = $default + $number
Reacties
- Gewoon om toe te voegen, in plaats van
echo
ing en vervolgens het gebruik vanread
kun je direct typen:read -p 'Please enter a number: ' yournumber
Antwoord
Spaties veroorzaken de fouten.
Als u wilt dat de gebruiker het nummer invoert wanneer hij wordt gevraagd als “Voer een nummer in:”, kunt u uw script gebruiken met enkele correcties zoals:
#!/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."
Controleer:
./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60.
Als u ons wilt er om het getal in te voeren als een argument voor het script, kunt u het onderstaande script gebruiken:
#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Controleer:
./temp.sh 50 The sum of 50 and 10 is 60.
Reacties
- Waarom zou je bc uitvoeren om simpele berekeningen met gehele getallen uit te voeren?
Antwoord
Er mogen geen spaties tussen “default = 10” & “sum = $”, ook standaard & nummer moet $ hebben om van de variabelen te lezen.
Het script werkt dan zoals verwacht voor mij, wanneer het wordt geschreven zoals hieronder;
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum."
Reacties
Antwoord
Dit is de snelste manier om te doen wat u vraagt:
#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))."
Uitvoer:
creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60.
Reacties
- dat kan gevaarlijk zijn – probeer
./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
- @mikeserv Zeer nauwkeurig, maar voor de oefening die ik ' m niet zeker of het een probleem is. Toch bedankt voor je reactie.
$
binnen de rekenkundige uitdrukking. Probeer bijvoorbeeld dit:num=5;def=10;echo "sum = $((num + def))"