Încerc să adaug 1 număr din linia de comandă și un număr ca în mod implicit. De exemplu: Când utilizatorul introduce numărul 50 scriptul va adăuga 10 (ca număr implicit).
./script 50 The sum of 50+ 10 is 60.
Aceasta este ceea ce am până acum.
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."
Am greșit sintaxa? Nu sunt sigur dacă sunt pe drumul cel bun. Adăug greșit numerele? Ar trebui să folosesc în schimb awk?
let sum = $default + $number
Comentarii
- Doar pentru a adăuga, în loc de
echo
ing și apoi utilizarearead
direct puteți introduce:read -p 'Please enter a number: ' yournumber
Răspuns
Spațiile cauzează erorile.
Dacă doriți ca utilizatorul să introducă numărul atunci când i se solicită „Vă rugăm să introduceți un număr:”, puteți utiliza scriptul cu câteva corecții ca:
#!/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."
Verificați:
./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60.
Dacă doriți ca noi er pentru a introduce numărul ca argument pentru script, puteți utiliza scriptul de mai jos:
#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Verificați:
./temp.sh 50 The sum of 50 and 10 is 60.
Comentarii
- De ce să te deranjezi să rulezi bc doar pentru a face aritmetică simplă întreagă?
Răspuns
Nu ar trebui să aveți spații între „default = 10” & „sum = $”, de asemenea implicit & numărul ar trebui să aibă $ înaintea lor pentru a citi din variabile.
Scriptul funcționează așa cum era de așteptat pentru mine, atunci când este scris ca mai jos;
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum."
Comentarii
Răspuns
Acesta este cel mai rapid mod de a face ceea ce cereți:
#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))."
Ieșire:
creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60.
Comentarii
- care ar putea fi periculos – încercați
./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
- @mikeserv Foarte precis, totuși pentru exercițiul I ' Nu sunt sigur dacă este o problemă. Vă mulțumim pentru comentariu indiferent.
$
în interiorul expresiei aritmetice. De exemplu, încercați acest lucru:num=5;def=10;echo "sum = $((num + def))"