SHELL中if的使用

shell中if的基本使用

if的使用需要使用 [ expression ] 或者 [[ expression ]] 特别的是,中括号的两侧需要使用空格。也可不使用[] 使用 test expression。
笔者习惯使用 [ expression ] 的格式,下文均为此格式。
下为符合expression则打印1。

if  [ expression ]  ; then
    echo 1
fi
#或者
if  test  expression ; then
    echo 1
fi

shell中if的基本使用

变量a和变量b数值相等则输出aaa,否则输出bbb

a=1
b=1
if [ $a -eq $b ] ; then
    echo aaa
else
    echo bbb
fi

SHELL中if中条件表达式的使用

在if的条件表达式中需要对判断的变量类型区分

shell中if的整数比较

整数比较时可以不使用""来包围变量。使用形如文上shell中if的基本使用
整数比较使用形如 [ $a -gt 0 ] 的表达式形式
其中
-eq 两个整数是否相等
-ne 两个整数是否不等
-gt 一个数是否大于另一个数
-lt 一个数是否小于另一个数
-ge 大于等于
-le 小于等于

shell中if的浮点数比较

参照浮点数运算,将两值相减。例 :

v=`echo $a $b|awk '{printf "%0.4f\n", $1-$2}'`

下面有解决的初步方法:
1.只比较大小,可以乘以对应的10的平方,再计算。

2.在只考虑两浮点数差值大于一的情况下。
相减出的值

使用cut指令切割第一个字符,和第二个字符。
|cut -c 1
第一个字符为 - ,则a<b
第一个字符0则相等
第一个字符为1-9,则a<b

两浮点数相差较小(小于1),仍需要比较的。需要逐位切割字符,比较大小。
shell中实现浮点数运算

shell中if的字符比较

字符比较必须使用""引号将变量包围。
比较使用 != 或者 =

$a=x
if [ "$a" = "x" ] ; then
    echo aaa
else
    echo bbb
fi
shell中if多个字符变量同时比较

形如以下模式的比较,变量最好加上{},形成 a 的 格 式 。 例 子 A : i f [ " {a}的格式。 例子A:if [ " aAif["ax" = “xx” ]
例子B:if [ " a x " = " x x " ] 例 子 A 会 认 为 变 量 {a}x" = "xx" ] 例子A会认为变量 ax"="xx"]Aax 是否为xx的字符

$a=x
$b=aaa
if [ "${a}${b}" = "x${b}" ] ; then
    echo aaa
else
    echo bbb
fi

shell中if连续判断多个条件

if中 || 或条件和 && 与条件的使用方法一致。

number1=1
number2=2

if [[ "$number1" = "1" ]] && [[ "$number2" = "2" ]]  ; then

    echo "number1=1 and number2=2"
fi

判断StrStart为1-9之间的数值,符合条件的输出StrstartNot0
下面的双中括号 [[ ]] 和单中括号效果一致 [ ]

StrStart=1          
if [[ "$StrStart" = "1" ]] || [[ "$StrStart" = "2" ]] || [[ "$StrStart" = "3" ]] || [[ "$StrStart" = "4" ]] || [[ "$StrStart" = "5" ]] || [[ "$StrStart" = "6" ]]|| [[ "$StrStart" = "7" ]] || [[ "$StrStart" = "8" ]] || [[ "$StrStart" = "9" ]]  ; then

    echo StrStartnot0
fi

文件判断

此部分笔者未使用过,摘自其他文章。
-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
注 在上述字符前加“!”则表示相反,即“是否不存在”
-nt 判断file1是否比file2新
-ot 判断file1是否比file2旧
————————————————
原文链接:https://blog.csdn.net/qq_28723681/article/details/116495755

SHELL中if使用正则表达式

判断number是否为0-9之间的数字。

if [ $number=^[0-9] ];then
    echo "correct"
else
    echo "error"
fi

以下为正则表达式的使用连接(未更新)
正则表达式的使用

文中如有错误,希望指正。感谢阅读。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自不量力的A同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值