Hvordan legger du til et tall som et kommandolinjeargument?

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

  • Åh jeg skjønner! Jeg har det nå. Det var bare et avstandsproblem. Jeg tenkte virkelig på dette. Takk for hjelpen!
  • Merk at du ikke ' t trenger å bruke $ inne i det aritmetiske uttrykket. Prøv for eksempel dette: num=5;def=10;echo "sum = $((num + def))"

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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *