1 számot próbálok hozzáadni a parancssorból, és egy számot alapértelmezettként. Például: Amikor a felhasználó beírja az 50-es számot, a szkript hozzáad 10-et (alapértelmezett számként).
./script 50 The sum of 50+ 10 is 60.
Ez az, amire eddig rendelkezem.
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."
Helytelen a szintaxisom? Nem vagyok biztos benne, hogy jó úton haladok-e. Helytelenül adom a számokat? Helyette használjam az awk-t?
let sum = $default + $number
Megjegyzések
- Csak hozzáadásra, a
echo
helyett, majd aread
közvetlenül beírhatja:read -p 'Please enter a number: ' yournumber
Válasz
A szóközök okozzák a hibákat.
Ha azt szeretné, hogy a felhasználó írja be a számot, amikor a program “Kérem, írjon be egy számot:” kérést kap, akkor a néhány helyesbítés:
#!/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."
Ellenőrizze:
./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60.
Ha szeretné, ha minket szeretne Ha a számot argumentumként szeretné bevinni a szkriptbe, használhatja az alábbi parancsfájlt:
#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Ellenőrizze:
./temp.sh 50 The sum of 50 and 10 is 60.
Megjegyzések
- Miért bajlódna a bc futtatásával, csak egyszerű egész számtani művelet elvégzése érdekében?
Válasz
Nem lehet szóköz az “default = 10” között & “sum = $”, szintén alapértelmezett & szám előtt $ kell lennie, hogy elolvashassa a változókból.
Ezután a szkript a várakozásoknak megfelelően működik, ha az alábbiak szerint írom;
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum."
Megjegyzések
Válasz
Ez a leggyorsabb módja annak, amit kért:
#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))."
Kimenet:
creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60.
Megjegyzések
- amelyek veszélyesek lehetnek – próbálkozzon
./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
- @mikeserv Nagyon pontos, azonban az I gyakorlathoz ' nem vagyok benne biztos, hogy aggodalomra ad okot. Köszönjük észrevételeit ettől függetlenül.
$
az aritmetikai kifejezés belsejében. Például próbálja ki:num=5;def=10;echo "sum = $((num + def))"