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 
echoing og deretter bruken avreaddirekte 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))"