shell脚本检查输入是否是字符串/整数/浮点

mia*_*mia 4 bash scripts

#!/bin/bash

read -p "Enter value:" val

echo "$val"|grep "^[0-9]*$"
val="$?"

if [[ $val == 0 ]]
then
echo "Integer"
exit
fi

echo $val|grep "^[a-zA-Z]*$"

val="$?"

if [[ $val == 0 ]]
then
echo "String"
exit
fi


echo $val|grep "^[0-9]*.[0-9]*$"

val="$?"

if [[ $val == 0 ]]
then
echo "Float"
exit
fi
Run Code Online (Sandbox Code Playgroud)

如果我输入像“ape”这样的字符串,它会显示“grep invalid range”,然后打印浮点数。我哪里做错了?

kar*_*rel 5

此 bash 代码为整数(如 123)返回整数,为浮点数(如 123.4)返回浮点数,为任何其他输入值(如“123”、One23 123. 或 123.4.5)返回字符串。

#!/bin/bash
read -p "Type a number or a string: " input
if [[ $input =~ ^[+-]?[0-9]+$ ]]; then
echo "Input is an integer."

elif [[ $input =~ ^[+-]?[0-9]+\.$ ]]; then
echo "Input is a string."

elif [[ $input =~ ^[+-]?[0-9]+\.?[0-9]*$ ]]; then
echo "Input is a float."

else
echo "Input is a string."
fi
Run Code Online (Sandbox Code Playgroud)