Kuinka lisäät numeron komentoriviargumenttina?

Yritän lisätä yhden numeron komentoriviltä ja yhden numeron kuten oletusarvoisesti. Esimerkki: Kun käyttäjä kirjoittaa numeron 50, komentosarja lisää 10 (oletusnumerona).

./script 50 The sum of 50+ 10 is 60. 

Tätä minulla on toistaiseksi.

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." 

Onko syntaksini väärä? En ole varma, olenko oikealla radalla. Lisäänkö numerot väärin? Pitäisikö minun käyttää awk: tä?

let sum = $default + $number 

Kommentit

  • Lisää vain echo -tekniikan sijaan read suoraan voit kirjoittaa: read -p 'Please enter a number: ' yournumber

Vastaa

Välilyönnit aiheuttavat virheet.

Jos haluat käyttäjän kirjoittavan numeron, kun häntä kehotetaan antamaan ”Anna numero:”, voit käyttää komentosarjaasi joitakin korjauksia:

#!/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." 

Tarkista:

./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60. 

Jos haluat meidät Jos syötät numeron argumenttina komentosarjaan, voit käyttää seuraavaa komentosarjaa:

#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum." 

Tarkista:

./temp.sh 50 The sum of 50 and 10 is 60. 

Kommentit

  • Miksi vaivautua bc: n suorittamiseen vain yksinkertaisen kokonaisluvun aritmeettisen tekemiseksi?

Vastaa

Sinulla ei saa olla välilyöntejä ”default = 10” välillä & ”sum = $”, myös oletus & -numerossa tulisi olla $ ennen lukea muuttujista.

Sitten komentosarja toimii minulle odotetusti, kun se kirjoitetaan kuten alla;

#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum." 

kommentit

  • Voi ymmärtää! Sain sen nyt. Se oli vain välimatka. Ajattelin todella tätä. Kiitos avusta!
  • Huomaa, että sinun ei ' t tarvitse käyttää $ aritmeettisen lausekkeen sisällä. Kokeile esimerkiksi: num=5;def=10;echo "sum = $((num + def))"

Vastaa

Tämä on nopein tapa tehdä pyytämäsi:

#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))." 

Tulos:

creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60. 

kommentit

  • joka voi olla vaarallista – kokeile ./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
  • @mikeserv Erittäin tarkka, mutta harjoituksen I ' en ole varma, aiheuttaako se huolta. Kiitos kommentistasi huolimatta.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *