Jeg prøver at tilføje 1 nummer fra kommandolinjen og et nummer som en standard. For eksempel: Når brugeren skriver nummeret 50, script tilføjer 10 (som standardnummer).
./script 50 The sum of 50+ 10 is 60.
Dette er hvad jeg har hidtil.
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."
Har jeg syntaksen forkert? Jeg er ikke sikker på, om jeg er på rette spor. Tilføjer jeg tallene forkert? Skal jeg bruge awk i stedet?
let sum = $default + $number
Kommentarer
- Bare for at tilføje i stedet for
echo
ing og derefter brugen afread
direkte kan du skrive:read -p 'Please enter a number: ' yournumber
Svar
Mellemrum forårsager fejlene.
Hvis du vil have brugeren til at indtaste nummeret, når han bliver bedt om at “Indtast et nummer:”, kan du bruge dit script med nogle rettelser som:
#!/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."
Check:
./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60.
Hvis du vil have os er for at indtaste nummeret som et argument til scriptet, kan du bruge scriptet nedenfor:
#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Check:
./temp.sh 50 The sum of 50 and 10 is 60.
Kommentarer
- Hvorfor gider du at køre bc bare for at gøre simpelt heltal aritmetik?
Svar
Du skal ikke have mellemrum mellem “default = 10” & “sum = $”, også standard & nummer skal have $ foran sig til at læse fra variablerne.
Scriptet fungerer derefter som forventet for mig, når det er skrevet som nedenfor;
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum."
Kommentarer
Svar
Dette er den hurtigste måde at gøre, hvad du beder om:
#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))."
Output:
creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60.
Kommentarer
- der kunne være farligt – prøv
./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
- @mikeserv Meget nøjagtig, dog for øvelsen I ' er ikke sikker på, om det er et problem. Tak for din kommentar uanset.
$
inde i det aritmetiske udtryk. F.eks. Prøv dette:num=5;def=10;echo "sum = $((num + def))"