Pokouším se přidat 1 číslo z příkazového řádku a jedno jako výchozí. Například: Když uživatel zadá číslo 50, skript přidá 10 (jako výchozí číslo).
./script 50 The sum of 50+ 10 is 60.
To je to, co zatím mám.
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."
Mám špatnou syntaxi? Nejsem si jistý, jestli jsem na správné cestě. Přidávám špatně čísla? Mám místo toho použít awk?
let sum = $default + $number
Komentáře
- Stačí přidat, místo
echo
ing a poté použitíread
přímo můžete psát:read -p 'Please enter a number: ' yournumber
odpověď
Mezery způsobují chyby.
Pokud chcete, aby uživatel zadal číslo, když se zobrazí výzva „Zadejte číslo:“, můžete použít skript s některé opravy jako:
#!/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."
Zkontrolovat:
./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60.
Pokud chcete nás Pokud chcete zadat číslo jako argument skriptu, můžete použít skript níže:
#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Zkontrolovat:
./temp.sh 50 The sum of 50 and 10 is 60.
Komentáře
- Proč se obtěžovat spuštěním bc jen kvůli jednoduché celočíselné aritmetice?
Odpověď
Neměli byste mít mezery mezi „default = 10“ & „sum = $“, také výchozí & číslo by mělo mít před sebou $, aby bylo možné číst z proměnných.
Skript pak funguje podle očekávání, když je napsán níže;
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum."
Komentáře
Odpovědět
Toto je nejrychlejší způsob, jak požadovat:
#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))."
Výstup:
creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60.
Komentáře
- které by mohly být nebezpečné – zkuste
./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
- @mikeserv Velmi přesné, ale pro cvičení I ' si nejsem jistý, jestli jde o problém. Bez ohledu na to vám děkujeme za komentář.
$
uvnitř aritmetického výrazu. Vyzkoušejte například toto:num=5;def=10;echo "sum = $((num + def))"