Shell编程之条件语句

news/2024/10/3 17:09:42

目录
  • 1.条件测试
  • 2.文件测试与整数测试
    • (1)文件测试
    • (2)整数测试
  • 3.字符串测试与逻辑测试
    • (1)字符串测试
    • (2)逻辑测试
  • 4.if语句
    • (1)if单分支语句
    • (2)if双分支语句
    • (3)if多分支语句
  • 5.case分支语句

1.条件测试

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,返回值为非0值(假false)时表示失败或异常。
test命令
测试表达式是否成立,若成立返回0,否则返回其他数值
test 条件表达式
[ 条件表达式 ]

2.文件测试与整数测试

(1)文件测试

test 选项 文件/目录路径
test 选项 $变量
[ 选项 文件或目录 ]
[ 选项 $变量]

常用选项
-e 目录或文件是否存在(Exist)
-d 目录是否存在(Directory)
-f 文件是否存在(File)
-r 当前用户是否有读权限(Read)
-w 当前用户是否有写权限(Write)
-x 当前用户是否有执行权限(Excute)
-L 软连接数否存在


(2)整数测试

test 整数1 选项 整数2
[ 整数1 选项 整数2 ]
[[ 运算表达式 选项 整数 ]]

常用选项
-eq 等于 ==
-ne 不等于 !=
-gt 大于 >
-lt 小于 <
-le 小于等于
-ge 大于等于


3.字符串测试与逻辑测试

(1)字符串测试

test "字符串1" == "字符串2"     [ "字符串1" == "字符串2" ]      [[ "字符串1" == "字符串2" ]]    ##判断字符串是否相同
test "字符串1" != "字符串2"     [ "字符串1" != "字符串2" ]      [[ "字符串1" != "字符串2" ]]     ##判断字符串或变量是否不同[[ "字符串1" =~ "字符串2" ]]    ##判断字符串是否包含字符串2
test -z "字符串"      test -z "$变量"  [ -z "$变量" ]   ##判断字符串或变量是否为空
test -n "字符串"      test -n "$变量"  [ -n "$变量" ]   ##判断字符串或变量是否有字符串




(2)逻辑测试

[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2

[ 表达式1 ] && [ 表达式2 ]   [ 表达式1 -a 表达式2 ]    [[ 表达式1 && 表达式2 ]]       ##且,要求前后表达式条件都成立
[ 表达式1 ] || [ 表达式2 ]   [ 表达式1 -o 表达式2 ]    [[ 表达式1 || 表达式2 ]]       ##或,只需前后表达式条件成立一个即可[ 表达式1 ] || 命令1             ##如果表达式1条件成立不会执行或运算符后面的命令1,如果表达式1条件不成立则会执行或运算符后面的命令1
[ 表达式1 ] && 命令1 || 命令2    ##如果表达式1条件成立则执行命令1,如果表达式1条件不成立则命令2[ ! 表达式1 ]                   ##取反,如果表达式1条件成立则最终结果为条件不成立




-c:发送包的个数
-i:发送包的间隔时间
-W:超时时间
-w:多少秒后停止 ping 命令操作




4.if语句

(1)if单分支语句

(2)if双分支语句

(3)if多分支语句


5.case分支语句


*注:判断进程是否正在运行的方法

systemctl status 进程服务
netstat -lntup | grep :端口进程名
netstat -lntup | grep 进程名
ss -lntup | grep :端口/进程名
lsof -i :端口
ps -elf | grep 进程名 | grep -v "grep" | grep -v "$$" | wc -l
pidof 进程名 | wc -w    #统计进程号大于0开启,0关闭
killall -0 进程名   #进程存在0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/29143.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

git merge指定提交(commit)

第一种 idea图形化界面操作 1.首先切换到要合并提交的分支上(即没有这些提交的分支) 2. 在git提交log里选有这些提交的分支,并将提交捡出 有多个提交的话就cherry pick多个提交就行,最后一起push 3. git push 下班记得打卡

麒麟 V10 一键安装 Oracle 11GR2(231017)单机版 2

https://www.modb.pro/db/1762008192972820480 安装准备1、安装好操作系统,建议安装图形化 2、配置好网络 3、挂载本地 ISO 镜像源 4、上传必须软件安装包(安装基础包,补丁包:33991024、35574075、35685663、6880880) 5、上传一键安装脚本:OracleShellInstall✨ 偷懒可以…

苯乙烯

反弹转空了。

《编译原理》阅读笔记:p1-p3

《编译原理》学习第 1 天,p1-p3总结,总计 3 页。 一、技术总结 1.compiler(编译器) p1, But, before a program can be run, it first must be translated into a form in which it can be executed by a computer. The software systems that do this translation are call…

c语言程序设计——实验报告七

实验项目名称:实验7数组的基本使用 实验项目类型:验证性 实验日期:2024年4月22日一、实验目的 1.熟练掌握数组的定义格式和数组元素的表示方法 2.熟悉数组的初始化方法和赋值方法 3.掌握字符数组存放字符串的方法和字符串函数的使用 4.熟悉数组元素的操作,特别是输入与输出…

[附源码]秦时明月6.2魔改版_搭建架设教程_附GM工具_安卓苹果

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 一. 演示视频 https://githubs.xyz/boot?app=50二. 环境 联网环境: centos7.6 , 放开所有端口 单机环境: VM虚拟机…

Pycharm的Python脚本模板

# @Time : ${DATE} ${TIME} # @Author : HeJinYang # @Description:

Windows平台git clone文件路径太长报错

解决文件路径太长导致的报错问题问题描述 在Windows下拉取一些比较大的开源项目经常会提示文件路径太长(filename too long),然后死活都不成功 解决办法 1.配置git git config --system core.longpaths true2.修改文件C:\Program Files\Git\etc\gitconfig(需要以管理员身份…