#!/bin/bash # # Method 1a=1234;echo "$a" | [-N ' ' sed-n '/^[0-9][0-9]*$/p ' "] && echo string A is numbers the first-n isShellTest flags, test for the subsequent string "' Sed-n '/^[0-9][0-9]*$/p '", and if not NULL, the result is true. SED shows all input line information by default, and the "-N" option for sed is to let sed not display, but only show what we need: that is, the following expression matches the row, which is implemented by adding "P" command in the expression. /^[0-9][0-9]*$/his meaning is to match the line that consists of at least one digit # # method 2, yes, but not bash implementation, is using GREP's regular #if grep ' ^[[:d igit:]]*$ ' <<< "$"; echo "is number." #else # echo ' No. ' #fi # # Method 3 #if ["$"-gt 0] 2>/dev/null; then # echo "is number." # else # echo ' No. ' #fi # # Method 4,case #case "$" in # [1-9][0-9]*] # echo "is number." #; # *) # ;; #esac # # Method 5,awk #echo $1| awk ' {print ($0~/^[-]? ( [0-9]) +[.]? ([0-9]) +$/)? " Number ":" String "} ' # # method 5,awk #if [-N ' $ (echo $1| Sed-n "/^[0-9]\+$/p") "];then # echo" is number. "#else # echo ' No. ' #fi # # method 6,expr Expr $" + "Ten &> D Ev/null if [$?-eq 0];then Echo ' is number ' else echo ' not number ' fi
6 ways to tell if a string is a number in the shell share