Sono un nuovo studente per spaccare gli script e sono perplesso su una domanda di assegnazione. Mi chiedevo se esiste un modo semplice per determinare se l'input di un utente è un numero intero o meno. Più in particolare, se all'utente viene richiesto di inserire un numero intero, è disponibile un controllo rapido per la convalida?C'è un modo semplice per determinare se l'input dell'utente è un numero intero in bash?
risposta
Questo è una specie di kludge, usa -eq per qualcosa di diverso da ciò a cui era destinato, ma controlla un intero, se non trova un int restituisce sia un errore che puoi lanciare a/dev/null e un valore di falso.
read input
if [ $input -eq $input 2>/dev/null ]
then
echo "$input is an integer"
else
echo "$input is not an integer"
fi
Un modo è verificare se contiene caratteri non numerici. Sostituisci tutti i caratteri numerici con nulla e controlla la lunghezza - se c'è lunghezza ci sono caratteri non numerici.
if [[ -n ${input//[0-9]/} ]]; then
echo "Contains letters!"
fi
Un altro approccio è verificare se la variabile, valutata in contesto aritmetico, è uguale a se stessa. Questo è specifico bash
if [[ $((foo)) != $foo ]]; then
echo "Not just a number!"
fi
BASH FAQ entry #54
Questa domanda frequente è intitolata "Come posso sapere se una variabile contiene un numero valido?" - Fornisce un sacco di possibili modi per identificare. –
ho trovato questo post http://www.unix.com/shell-programming-scripting/21668-how-check-whether-string-number-not.html che parla di questo.
Se il vostro ingresso non ha bisogno di controllare se c'è un +/- sul numero, allora si può fare:
expr $num + 1 2> /dev/null
if [ $? = 0 ]
then
echo "Val was numeric"
else
echo "Val was non-numeric"
fi
È possibile verificare utilizzando espressioni regolari
if ! [[ "$yournumber" =~ ^[0-9]+$ ]] ;
then exec >&2; echo "error: Not a number"; exit 1
fi
Questo è il più letterale, e quindi più facile da ricordare. –
Ecco un altro modo di farlo. Probabilmente è un po 'più elaborato del necessario nella maggior parte dei casi, ma gestirà anche i decimali. Ho scritto il codice qui sotto per ottenere il numero arrotondato. Controlla anche l'input numerico nel processo.
#--- getRound -- Gives number rounded to nearest integer -----------------------
# usage: getRound <inputNumber>
#
# echos the rounded number
# Best to use it like:
# roundedNumber=`getRound $Number`
# check the return value ($?) and then process further
#
# Return Value:
# 2 - if <inputNumber> is not passed, or if more arguments are passed
# 3 - if <inputNumber> is not a positive number
# 0 - if <inputNumber> is successfully rounded
#
# Limitation: Cannot be used for negative numbers
#-------------------------------------------------------------------------------
getRound(){
if [ $# -ne 1 ]
then
exit 2
fi
#--- Check if input is a number
Input=$1
AB=`echo A${Input}B | tr -d [:digit:] | tr -d '.'`
if [ "${AB}" != "AB" ] #--- Allow only '.' and digit
then
exit 3
fi
DOTorNone=`echo ${Input} | tr -d [:digit:]` #--- Allow only one '.'
if [ "${DOTorNone}" != "" ] && [ "${DOTorNone}" != "." ]
then
exit 3
fi
echo $Input | awk '{print int($1+0.5)}' #--- Round to nearest integer
}
MyNumber=`getRound $1`
if [ $? -ne 0 ]
then
echo "Empty or invalid input passed"
else
echo "Rounded input: $MyNumber"
fi
- 1. C'è un modo per determinare se l'app per Android è in esecuzione a schermo intero?
- 2. VB2010 Come capire se un numero è un intero intero
- 3. Come rilevare se un dato numero è un numero intero?
- 4. Come determinare se una stringa è un numero in C#
- 5. Qual è un modo migliore per verificare se una stringa è un numero intero su iPhone?
- 6. Un modo per determinare se un elemento è stato imballato?
- 7. bash - Come dichiarare un numero intero locale?
- 8. Un modo semplice per determinare se un dato grafico è sottografo di qualche altro grafico?
- 9. C# - come determinare se un tipo è un numero
- 10. Come determinare se una variante è un numero intero in VBA?
- 11. C'è un modo per verificare se una variabile è un numero intero? C++
- 12. Python: verifica se un argomento è un numero intero
- 13. Controllare se una variabile è un numero intero in javascript
- 14. Come verificare se un doppio è un numero intero
- 15. Verifica se il valore è un numero intero in Sass
- 16. Verifica se un intero è compreso nell'intervallo
- 17. Come determinare a livello intero numero intero/min in C?
- 18. Come determinare se un determinato numero intero si trova in una particolare enumerazione?
- 19. C'è un modo per determinare se Java System.in è "interattivo"?
- 20. determinare se un dato numero è un numero primo in Haskell
- 21. Come si verifica se un numero in virgola mobile è un numero intero in haskell?
- 22. C'è un modo semplice per convertire un booleano in un intero?
- 23. VBScript: verifica se l'input dell'utente è un numero intero
- 24. Come rappresentare un numero intero superiore a un numero intero
- 25. In JavaScript/jQuery qual è il modo migliore per convertire un numero con una virgola in un numero intero?
- 26. Determinare se char è un numero o una lettera
- 27. come verificare se il carattere è un numero intero
- 28. Twig - Come verificare se la variabile è un numero/intero
- 29. Verifica se BigDecimal è un valore intero
- 30. Determinare se un numero divide uniformemente per 25, Python
Presuppone che/dev/null esista – Xofo
Presuppone anche che l'argomento non sia vuoto –