case $INPUT in+([0-9])*(.)*([0-9]))# Variable is numeric;;*)# Nope, not numeric;;esac
+1 pour ksh jokers +(..), *(...) ! Ne ksh mettre des caractères génériques avant et non après, comme dans un "régulier" expression régulière? Cette solution semble considérer 123...99 en numérique alors utilisez simplement la ? l'opérateur qui correspond à 0 ou 1 répétitions de la re comme ceci +([0-9])?(.)*([0-9])
Cela résout FreudianSlip réponse à inclure en option, " - " ou "+" de signer, de permettre à virgule des nombres qui commencent par "." (pas de 0), et d'exclure les numéros contenant plusieurs "." (par exemple, "12...34"):
case $INPUT in{,1}([-+])+([0-9]){,1}(.)*([0-9])|{,1}([-+]).+([0-9]))# Variable is numeric;;*)# Nope, not numeric;;esac
Avoir un aller avec :
+(..), *(...)
!Ne ksh mettre des caractères génériques avant et non après, comme dans un "régulier" expression régulière?
Cette solution semble considérer 123...99 en numérique
alors utilisez simplement la ? l'opérateur qui correspond à 0 ou 1 répétitions de la re comme ceci +([0-9])?(.)*([0-9])
OriginalL'auteur FreudianSlip
Cela résout FreudianSlip réponse à inclure en option, " - " ou "+" de signer, de permettre à virgule des nombres qui commencent par "." (pas de 0), et d'exclure les numéros contenant plusieurs "." (par exemple, "12...34"):
OriginalL'auteur GTB
J'ai vu cette réponse ici (https://www.unix.com/302299284-post9.html) et il fonctionne en ksh-88 dans Solaris 10 pour les entiers:
OriginalL'auteur FanDeLaU
Il s'agira de vérifier si l'entrée est numérique (entière positive ou négative) et l'impression numérique si il est.
OriginalL'auteur Ruchi
Plus simple, si vous voulez simplement savoir si la chaîne est composée de chiffres:
OriginalL'auteur Mike Rousseau
Vous pouvez utiliser l'opérateur chaîne dans le test comme suit:
OriginalL'auteur Michael Erickson