shell编程之进阶篇一表达式

 2023-09-06 阅读 22 评论 0

摘要:表达式 测试语句 Shell环境根据命令执行后的返回状态值 ($?)来判断是否执行成功,当返回值为0,表示成功, 值为其他时,表示失败。 使用专门的测试工具—test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值0为成立) 测试语句形

表达式

测试语句

Shell环境根据命令执行后的返回状态值
($?)来判断是否执行成功,当返回值为0,表示成功,
值为其他时,表示失败。
使用专门的测试工具—test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值0为成立)

  • 测试语句形式
    A: test 条件表达式
    B:[ 条件表达式 ]

  • 格式注意:
    以上两种方法的作用完全一样,后者为常用。
    但后者需要注意方括号[ ]与条件表达式之间至少有一个空格。
    test跟 [] 的意思一样
    条件成立,状态返回值是0
    条件不成立,状态返回值是1

  • 操作注意:
    []两侧为什么要有空格

root@ubuntu:~# [1 = 1]
1: command not found

可以看到:
两侧没有空格,就会报错,为什么呢?因为你不合规范


条件表达式

测试的结果使用echo $?来查看

  • 逻辑表达式
    逻辑表达式一般用于判断多个条件之间的依赖关系。
    常见的逻辑表达式有: && 和 ||

  • &&
    命令1 && 命令2

		如果命令1执行成功,那么我才执行命令2		-- 夫唱妇随如果命令1执行失败,那么命令2也不执行`

示例:

# [ 1 = 1 ] && echo "条件成立"
条件成立
# [ 1 = 2 ] && echo "条件成立"
#
  • ||
    命令1 || 命令2
		如果命令1执行成功,那么命令2不执行			-- 对着干如果命令1执行失败,那么命令2执行	

示例:

# [ 1 = 2 ] || echo "条件不成立"
条件不成立
# [ 1 = 1 ] || echo "条件不成立"
#

文件表达式

-f 判断输入内容是否是一个文件
示例:

# [ -f weizhi.sh ] && echo "是一个文件"
是一个文件
# [ -f weizhi.sddh ] || echo "不是一个文件"
不是一个文件

-d 判断输入内容是否是一个目录
示例:

# [ -d weizhi.sddh ] || echo "不是一个目录"
不是一个目录
# mkdir nihao
# [ -d nihao ] && echo "是一个目录"
是一个目录

-x 判断输入内容是否可执行
示例:

# [ -x age.sh ] || echo "文件没有执行权限"
文件没有执行权限
# [ -x test.sh ] && echo "文件有执行权限"
文件有执行权限

数值操作符

主要根据给定的两个值,判断第一个与第二个数的关系,如是否大于、小于、等于第二个数。常见选项如下:

表达式含义
n1 -eq n2相等
n1 -gt n2大于
n1 -ge n2大于等于
n1 -lt n2小于
n1 -le n2小于等于
n1 -ne n2不等于

字符串比较

表达式含义
str1 == str2str1和str2字符串内容一致
str1 != str2str1和str2字符串内容不一致,!表示相反的意思

判断字符是否内容一致,例:

root@ubuntu:~# [ a == a ]
root@ubuntu:~# echo $?
0
root@ubuntu:~# [ a != a ]
root@ubuntu:~# echo $?
1

计算表达式

定义:
计算表达式,简单来说就是对具体的内容进行算数计算

格式:

  • 方式一:
    $(()) $(( 计算表达式 ))
  • 方式二:
    let let 计算表达式

注意:
$(())中只能用±*/和()运算符,并且只能做整数运算

  • (())演示效果格式:a=(())演示效果 格式:a=(())a=((变量名a+1))
    注意:
    表达式范围内,空格不限制
    计算示例
root@ubuntu:~# echo $((100/5))
20
  • let演示效果
    格式:let 变量名a=变量名a+1
    注意:
    表达式必须是一个整体,中间不能出现空格等特殊字符
    let示例
root@ubuntu:~# i=1
root@ubuntu:~# let i=i+7
root@ubuntu:~# echo $i
8

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/10013.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息