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 sijaanread
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
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.
$
aritmeettisen lausekkeen sisällä. Kokeile esimerkiksi:num=5;def=10;echo "sum = $((num + def))"