Jeg prøver å legge til 1 nummer fra kommandolinjen, og ett nummer som som standard. For eksempel: Når brukeren skriver inn tallet 50, skript vil legge til 10 (som standardnummer).
./script 50 The sum of 50+ 10 is 60.
Dette er hva jeg har så langt.
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 feil? Jeg er ikke sikker på om jeg er på rett spor. Legger jeg til tallene feil? Skal jeg bruke awk i stedet?
let sum = $default + $number
Kommentarer
- Bare for å legge til, i stedet for
echo
ing og deretter bruken avread
direkte kan du skrive:read -p 'Please enter a number: ' yournumber
Svar
Plasser forårsaker feilene.
Hvis du vil at brukeren skal skrive inn nummeret når han blir bedt om å «Vennligst skriv inn et nummer:», kan du bruke skriptet ditt med noen 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."
Sjekk:
./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60.
Hvis du vil ha oss er for å legge inn nummeret som et argument til skriptet, kan du bruke skriptet nedenfor:
#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Sjekk:
./temp.sh 50 The sum of 50 and 10 is 60.
Kommentarer
- Hvorfor gidder å kjøre bc bare for å gjøre enkle heltallsregninger?
Svar
Du bør ikke ha mellomrom mellom «default = 10» & «sum = $», også standard & tallet skal ha $ før de kan lese fra variablene.
Skriptet fungerer da som forventet for meg, 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 raskeste måten å gjøre det du spør om:
#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))."
Utgang:
creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60.
Kommentarer
- som kan være farlig – prøv
./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
- @mikeserv Veldig nøyaktig, men for øvelsen jeg ' er ikke sikker på om det er et problem. Takk for kommentaren uansett.
$
inne i det aritmetiske uttrykket. Prøv for eksempel dette:num=5;def=10;echo "sum = $((num + def))"