linux判断参数小于1,其他1-判断传入的参数为0或整数的多种思路

# **一、判断字符串是否为整数的多种思路**

## **1)使用sed加正则表达式**

* 删除字符串中的所有数值,看字符串长度是否为0来判断

```shell

[ -n "`echo oldboy123|sed 's#[0-9]##g'`" ] && echo char || echo int

```

> char

```shell

[ -n "`echo 345678123|sed 's#[0-9]##g'`" ] && echo char || echo int

```

> int

## **2)用变量的子串替代方法**

* 删除数值部分比较是否等于0

```shell

num=oldboy123;[ -z "`echo "${num//[0-9]/}"`" ] && echo int || echo char

```

> char

```shell

num=345678123;[ -z "`echo "${num//[0-9]/}"`" ] && echo int || echo char

```

> int

## **3)用变量的子串替代方法**

* 删除非数值部分比较是本身

```shell

num=oldboy123;[ -n "$num" -a "$num" = "${num//[^0-9]/}" ] && echo int || echo char

```

> char

```shell

num=456789123;[ -n "$num" -a "$num" = "${num//[^0-9]/}" ] && echo char || echo int

```

> char

## **4)通过expr计算判断[推荐]**

* expr进行整数计算,如果参与计算的是非整数,就会报错,查看返回值就能确定

> * `expr oldboy + 0 &>/dev/null;echo $?`

2

> * `expr 123 + 0 &>/dev/null;echo $? `

0

## **5)通过双中括号的正则判断**

* 具体用法man bash查看帮助

```

[[ oldboy123 =~ ^[0-9]+$ ]] && echo int || echo char

```

> char

```

[[ 345678123 =~ ^[0-9]+$ ]] && echo int || echo char

```

> int

# **二、判断字符串是否为0的多种思路**

## **1)使用字符串表达式-z和-n**

```shell

[ -z "oldboy" ] && echo "zero" || echo "no zero"

```

## 2**)使用变量子串**

```shell

char=oldboy;[ ${#char} -eq 0 ] && echo "zero" || echo "no zero"

```

## **3)使用expr length函数判断**

```shell

[ `expr length "oldboy"` -eq 0 ] && echo "zero" || echo "no zero"

```

## **4)使用wc -L参数统计**

```shell

[ `echo oldboy|wc -L` -eq 0 ] && echo "zero" || echo "no zero"

```

## **5)使用awk length函数统计**

```shell

[ `echo oldboy|awk '{print length}'` -eq 0 ] && echo "zero" || echo "no zero"

```

# **三、扩展:判断传入的参数个数是否满足要求**

假如要求传入两个参数,则可以直接判断第二个参数是否为空,如果为空,则表示第二个参数不存在

```shell

[ -z $2 ] && echo "zero" || echo "no zero"

```

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值