#!/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”,然后打印浮点数。我哪里做错了?
此 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)