Sto cercando di aggiungere 1 numero dalla riga di comando e un numero come predefinito. Ad esempio: quando lutente digita il numero 50, lo script aggiungerà 10 (come numero predefinito).
./script 50 The sum of 50+ 10 is 60.
Questo è quello che ho finora.
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."
Ho la sintassi sbagliata? Non sono sicuro di essere sulla strada giusta. Sto aggiungendo i numeri in modo sbagliato? Dovrei invece usare awk?
let sum = $default + $number
Commenti
- Solo per aggiungere, invece di
echo
ing e poi luso diread
puoi digitare direttamente:read -p 'Please enter a number: ' yournumber
Risposta
Gli spazi stanno causando gli errori.
Se desideri che lutente inserisca il numero quando gli viene chiesto come “Inserisci un numero:”, puoi utilizzare il tuo script con alcune correzioni come:
#!/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."
Controlla:
./temp.sh Please enter a number: 50 The sum of 50 and 10 is 60.
Se vuoi noi Per inserire il numero come argomento dello script, puoi utilizzare lo script seguente:
#!/bin/bash number="$1" default=10 sum=`echo "$number + $default" | bc` echo "The sum of $number and 10 is $sum."
Controlla:
./temp.sh 50 The sum of 50 and 10 is 60.
Commenti
- Perché preoccuparsi di eseguire bc solo per eseguire semplici operazioni aritmetiche su interi?
Risposta
Non dovresti avere spazi tra “default = 10” & “sum = $”, anche predefinito & il numero dovrebbe avere $ prima di loro per poter leggere dalle variabili.
Lo script quindi funziona come previsto per me, se scritto come di seguito;
#!/bin/bash echo -n "Please enter a number: " read number default=10 sum=$(($default + $number)) echo "The sum of $number and 10 is $sum."
Commenti
Answer
Questo è il modo più veloce per fare ciò che chiedi:
#!/bin/bash echo "The sum of $1 + 10 is $(($1 + 10))."
Output:
creme@fraiche:~/$ ./script.sh 50 The sum of 50 + 10 is 60.
Commenti
- che potrebbe essere pericoloso – prova
./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
- @mikeserv Molto preciso, tuttavia per lesercizio I ' non sono sicuro che sia un problema. Grazie per il tuo commento a prescindere.
$
allinterno dellespressione aritmetica. Ad esempio, prova questo:num=5;def=10;echo "sum = $((num + def))"