用户输入一个值,存放在一个变量中,怎么来判断这个变量里的值是字符还是数字,Shell
对不起,在linux的shell中,一般是bash,在不做运算的时候是不区分变量的类型的,也不需要特别声明。所以实际在脚本中,请按用途给变量赋值,并且在需要重复使用这个变量的时候,重置它(unset)就好了。
个人认为没有必要用shell来测一下它里面放的是什么值。
个人认为没有必要用shell来测一下它里面放的是什么值。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-07-30
#! /bin/bash
printf "Enter: "
read var
if [[ $var =~ ^[0-9]+$ ]]
then
echo "Number."
elif [[ $var =~ ^[A-Za-z]+$ ]]
then
echo "String."
else
echo "mixed number and string or others "
fi
或者 awk or gawk
#! /bin/bash
printf "Enter: "
read var
echo "$var" | gawk '{
if ($0 ~ /^[0-9]+$/){
print "Number "
} else if ($0 ~ /^[A-Za-z]+$/){
print "String "
} else {
print "Mixed number and string or others"
}
}'本回答被网友采纳
printf "Enter: "
read var
if [[ $var =~ ^[0-9]+$ ]]
then
echo "Number."
elif [[ $var =~ ^[A-Za-z]+$ ]]
then
echo "String."
else
echo "mixed number and string or others "
fi
或者 awk or gawk
#! /bin/bash
printf "Enter: "
read var
echo "$var" | gawk '{
if ($0 ~ /^[0-9]+$/){
print "Number "
} else if ($0 ~ /^[A-Za-z]+$/){
print "String "
} else {
print "Mixed number and string or others"
}
}'本回答被网友采纳
第2个回答 2009-07-29
read input
tst=`echo $input | sed -n "/^[0-9]\+$/p"`
if [ "x$tt" == "x" ]; then
echo no
else
echo yes
fi
tst=`echo $input | sed -n "/^[0-9]\+$/p"`
if [ "x$tt" == "x" ]; then
echo no
else
echo yes
fi