
a=1234echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] &&echo string a is numbers
第一个-n是shell的测试标志,对后面的串"`sed -n '/^[0-9][0-9]*$/p'`" 进行测试,如果非空,则结果为真。
sed默认会显示所有输入行信息的,sed 的“-n”选项是让sed不要显示,而只显示我们所需要的内容:即后面的表达式所匹配的行,这是通过表达式中加入“p”命令来实现的。
/^[0-9][0-9]*$/他的含义是匹配至少由一位数字构成的行
## 方法2, 可以,不过不是bash实现的,是使用了grep的正则
#if grep '^[[:digit:]]*$' <<<"$1"then
# echo "$1 is number."
#else
# echo 'no.'
#fi
## 方法3
#if [ "$1" -gt 0 ] 2>/dev/null then
# echo "$1 is number."
#else
# echo 'no.'
#fi
## 方法4,case
#case "$1" in
# [1-9][0-9]*)
#echo "$1 is number."
#
# *)
#
#esac
## 方法5,awk
#echo $1| awk '{print($0~/^[-]?([0-9])+[.]?([0-9])+$/)?"number":"string"}'
## 方法5,awk
#if [ -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ]then
# echo "$1 is number."
#else
# echo 'no.'
#fi
## 方法6,expr
expr $1 "+" 10 &>/dev/null
if [ $? -eq 0 ]then
echo "$1 is number"
else
echo "$1 not number"
fi
if为判断语句,判断某个东西是否达到设定的条件。
1,格式为:
if 语句格式if 条件
then
Command
else
Command
fi 别忘了这个结尾
2,if的三种条件表达式:
if command thenif 函数 then 命令执行成功,等于返回0 (比如grep ,找到匹配) 执行失败,返回非0 (grep,没找到匹配)
if [ expression_r_r_r ] then 表达式结果为真,则返回0,if把0值引向then
if test expression_r_r_r then 表达式结果为假,则返回非0,if把非0值引向then
1、在shell编程中,输入一个数可以通过read命令来完成。
2、大于0输出该数,小于或等于0,输出0值,可以借助于if结构来判断。
3、示例如下
//read从键盘读取一个数保存到变量i中//并同时输出:“输入一个数”的字符提示
read -p "输入一个数:" i
//如果用户输入的数i大于0就输出i的值
if ((i > 0))then
echo $i
//否则就直接用echo命令输出0
else
echo 0
fi //这里if语句结束
4、执行效果如下:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)