Hoe voeg je een getal toe als argument op de opdrachtregel?

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

  • Oh ik begrijp het! Ik heb het nu. Het was gewoon een probleem met de afstand. Ik heb hier echt over nagedacht. Bedankt voor de hulp!
  • Merk op dat u niet ' t de $ binnen de rekenkundige uitdrukking. Probeer bijvoorbeeld dit: num=5;def=10;echo "sum = $((num + def))"

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.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *