问答详情
源自:4-2 shell多分支if语句例:计算器

咨询下老师,if判断里不能用正则表达式么?

咨询下老师

if [判断]

    then

        程序

fi

这个结构里的判断能否用正则表达式

比如判断符号为+-*/之一,可否写成

if [ "$ope" == [+-*/] ]

我一开始这样写,没有加数字的判断

是成功了

后来加了数字的判断,就不行了

不晓得是碰巧还是我的写法有问题

如果能用正则,这个计算器就简单多了


-----------------------------------------------


我做了一个小案例

#!/bin/bash

#输入字符串str

read -p "please input a string:" str

#如果字符串含有数字

if [ "$str" == "[0-9]" ]

    then

#输出“有数字”

        echo "have number!"

#否则

else

#输出“没有数字”

    echo "haven't number!"

fi


请问这样写对么?

我输入单数字“4”

都显示"haven't number!"

求指教

-------------

顺带说一句  我把“”去了也不行

貌似if [判断]

中的判断只能识别字符串(可转数字)

正则中的[]也会被识别成字符串

求高手指点

提问者:xiele 2017-02-11 13:33

个回答

  • 你像风一样0912
    2017-12-29 16:21:26

    首先要先定义符号变量sign="^[+,-,*,/]$"

    然后判断ope是否符合sign正则表达

    if [ "$ope" =~  $sign ]

    注意语法格式。

  • 慕粉144516442
    2017-03-23 10:09:47

    [[]]可以解决,但不应该是"[0-9]"吧,应该没有引号

  • xiele
    2017-02-15 10:19:04

    已找到答案

    if后判断用匹配  需要套用[[]]格式

  • 宝慕林5727637
    2017-02-11 22:28:50

    可以用正则的,这个与数字判断没有关系的吧