Linux中shell脚本常用命令、条件语句与if、case语句

news2024/11/17 21:23:57

目录

一.shell脚本常用命令

1.1.echo命令

1.2.date命令

1.3.cal命令

1.4.tr命令

1.5.cut命令

1.6.sort命令

1.7.uniq命令

1.8.cat多行重定向

二.条件语句

2.1.条件测试(三种测试方法)

 2.2.正整数值比较

2.3.字符串比较 

2.4.逻辑测试 

三.if语句

3.1.使用格式

 3.2.if语句简单操作

 四.case语句

4.1.使用格式

4.2.case操作演练


一.shell脚本常用命令

1.1.echo命令

echo命令:打印内容在窗口中

(1)echo   -n   表示输出不换行

(2)echo   -e   表示输出转义符       

echo  -e 配合转义符

\b  退格,删除前一个字符。例如 echo   -e  "1234\b567" 则输出的是123567,4会被删除。

\c  抑制更多输出,\c后的内容全部不输出。例如 echo -e   "123\c456789"则输出的是123。

\n  输出换行,\n后的内容换行。例如 echo  -e  "123\n456  " 则输出123下一行输出456。

\t   相当于输出过程中按了一下tab键。

\f   输出换行但是光标位置不变。例如echo -e  "123\f456"则输入123下一行开头空出123的位置然后再输出456

1.2.date命令

date命令:查看时间,显示格式为,星期  月   日 时分秒   年

选项:

+%F    输出格式年-月-日,注意%在crontab定时中不能直接使用,需要转义

+%T    输出格式时:分:秒, 注意%在crontab定时中不能直接使用,需要转义

1.3.cal命令

cal命令:显示当月日历。

选项:

cal    12  显示本年整年日历

cal    某年  显示此年完整日历

1.4.tr命令

tr命令:替换内容

基本格式:tr    需要替换的内容     替换后的内容

例如:  tr  [a-z]     [A-Z]  遇见小写字母全部转为大写字母

选项:

-s    压缩功能。例如  tr  -s  aaa  输出a。

-d    删除功能。例如 tr  -d   abc 则输入abc123回车只会打印123。

-c    用字符串1中字符集的补集替换此字符集,例如 cat /dev/random | tr -dc [[:alnum:]]  | head -c 12。  /dev/random中是随机的字符内容         -dc 表示删除其他不需要内容   [[:alnum:]] 表示数字和字符      head   -c 12  表示取前12个字符,完整表达式意思为查看random文件并将非字符和数字内容删除然后取前12个字符,常用于生成随机密码。

1.5.cut命令

cut命令:提取想要的信息。

选项:

-d   指定分隔符   例如 cut  -d   ":"指定:为分隔符。

-f    选择第几列    例如  cut  -f3 取第三列,-f1,3取第1列和第三列,-f1-3取1-3列。

[root@zrsb data]$ touch cut.txt
[root@zrsb data]$ vim cut.txt
deng sen
ka zen
she she
he  he
le  le
[root@zrsb data]# cut -d ' ' -f 1 cut.txt 
deng
ka
she
he
le 

1.6.sort命令

sort命令:排序

选项:

-r 执行反方向(由上至下)整理

-n 按数字大小排序,默认第一列默认按字母顺序

-t 指定分隔符

-k 指定列 ,例如 -k3

1.7.uniq命令

uniq命令:去除连续的重复,一般配合sort使用

-c 显示每个重复出现的次数

split 命令:分隔大文件

-b 大小(例如1G) +要分隔文件名 加名称分隔指定名称,但是后面的xaa,xab不能指定,只能指定x。

1.8.cat多行重定向

cat   <<EOF

1

2

3

EOF 

打印123到屏幕

二.条件语句

2.1.条件测试(三种测试方法)

①test命令测试

②[   ]测试(注意前后需要有空格)

③[[   ]]加强版[   ],测试支持通配符和正则表达式

三种测试方法选项:

-d 测试是否为文件夹

-f  测试是否为普通文件

-e 测试文件或目录是否存在

-a 测试文件或目录是否存在,不建议使用此选项。取反!=时echo  $?是错误的返回值。

-L 测试是否为软连接文件

-r 判断当前用户是否有读权限,根据实际情况返回结果,不是按ll显示的文件属性权限。

-w 判断当前用户是否有写权限,根据实际情况返回结果,不是ll显示的文件属性权限。

-x 判断当前用户是否有可执行权限,根据实际情况返回结果,root账户时其他用户有执行权限root账户也有,若其他账户没有执行权限则root也没有。

 2.2.正整数值比较

比较方法使用上述三种条件测试即可:

①test命令

②[  ] 注意前后空格

③[[   ]]注意前后空格

 选项:

-eq   比较第一个正整数是否等于(equal)第二个正整数

-ne   比较第一个正整数不等于(not equal)第二个正整数

-gt    比较第一个正整数是否大于(Greate than)第二个正整数

-lt     比较第一个正整数是否小于(Lesser than)第二个正整数

-ge   比较第一个正整数是否大于等于(Greate or equal )第二个正整数

-le    比较第一个正整数是否小于等于(Lesser or  equal)第二个正整数

2.3.字符串比较 

比较方法使用上述三种条件测试即可:

①test命令

②[ ] 注意前后空格

③[[  ]]注意前后空格

选项:

 =   等号前后字符串是否相等,注意前后需要空格。

!=   !表示取反的意思,等号前后字符串是否不相等,注意前后需要空格。

-z   判断字符串是否为空。

-n  字符是否存在。

2.4.逻辑测试 

①格式1:[ 表达式1 ]  操作符  [ 表达式2 ]

②格式2:命令1    操作符    命令2

操作符:

&&或-a  表示且的意思,前面表达式或命令1为真才会执行操作符后面的表达式2或命令2。一假则为假。

||或-o   表示或的意思,前面表达式1或命令1为真则整个表达式为真,前面表达式为假或命令为假才会执行后面的表达式2或命令2 。一真则为真。

!   逻辑否。
 

三.if语句

3.1.使用格式

if   [条件判断]

then   (条件1成立则走then)

[执行命令]

elif  [条件判断2 ]    (可添加多个elif )

then (条件2成立则走then)

[执行命令]

else    (所有条件不成立则走else)

[执行命令]

fi   (if结束语句)

 3.2.if语句简单操作

学生输入分数判断自己的成绩是优秀(91-100)、良好(81-90)、及格(60-80)、不及格(小于60)

vim ll.sh                          #创建脚本文件,注意必须.sh结尾
脚本内容:
#!/bin/bash                       #脚本解释器
read -p  "请输入你的成绩进行判断(0-100): " cj  #读取用户输入的内容为变量cj
if [ $cj -ge 91 -a  $cj -le 100   ]       #条件1:如果cj大于等于91且小于等于100则执行then 
then                                        #key符合条件1执行此then
echo "你的成绩为优秀"
elif [ $cj -ge 81 -a $cj -le 90    ]      #条件2:如果cj大于等于81且小于等于90则执行then
then                                        #key符合条件2执行此then
echo "你的成绩为良好"
elif [ $cj -ge 60 -a $cj -le 80    ]      #条件3:如果cj大于等于60且小于等于80则执行then
then                                        #key符合条件3执行此then
echo "你的成绩为及格"
elif [ $cj -lt 60  ]                       #条件4:如果cj大于等于60且小于等于80则执行then
then                                        #key符合条件4执行此then
echo "你的成绩为不及格"                  
else                                        #key不符合上述任何条件则执行else
echo "输入错误,请输入0-100的正整数"
fi                                          #结束语fi
chmod +x a.sh                     #脚本添加执行权限
bash   a.sh                       #使用shell执行脚本,也可使用路径方式执行

 四.case语句

4.1.使用格式

case   变量引用     in

PAT1)    符合条件1执行分支1的命令,PAT1可以使用通配符

分支1命令

;;   每个分支结束的固定格式

PAT2)    符合条件1执行分支2的命令,PAT2可以使用通配符

分支2命令

;;   每个分支结束的固定格式,可以有多个分支

*) 不符合其他任意分支的默认分支

默认分支命令

;; 分支结束的固定格式

esac   case语句结束标志

4.2.case操作演练

vim case.sh     #创建case.sh脚本
case.sh脚本内容:
#!/bin/bash
read -p "请输入你的分数" ak     #读取用户输入内容为变量ak

case $ak in                    #case判断 变量$ak
100)                           #若$ak等于100则执行100)内容
echo "$ak 你太tm优秀了"
;;                             #每个分支结束符
[89][0-9])                   
echo "$ak 表现不错,菜鸟"
;;
[67][0-9])
echo "$ak 你及格了,小丑"
;;
[0-9]|[1-5][0-9])
echo "$ak 你不及格,废物"
;;
*)
echo "输入有误"  
esac                           #case语句结束标志

chmod  +x  case.sh             #脚本添加可执行权限
bash       case.sh             #通过shell执行脚本  

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

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

相关文章

深入了解 Java 中 Files 类的常用方法及抽象类的 final 修饰

文章目录 Files 类常用方法抽象类的 final 修饰 &#x1f389;欢迎来到Java学习路线专栏~深入了解 Java 中 Files 类的常用方法及抽象类的 final 修饰 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a…

【C语言学习】二分法查找有序数组中的数

二分查找的基本原理 二分查找的基本逻辑就是每次找区间的中间数&#xff0c;然后与要查找的数进行比较&#xff0c;不断的缩小区间&#xff0c;最后区间中只剩一个数&#xff0c;即为要查找的数。如果不是&#xff0c;则没有该数。 二分查找只适用于有序数组 以数组中的数从左…

计算机视觉领域文献引用

Bag of freebies 炼丹白嫖加油包 Bag of freebies、致力于解决数据集中语义分布可能存在偏差的问题。在处理语义分布偏差问题时&#xff0c;一个非常重要的问题是不同类别之间存在数据不平衡的问题。 一、数据增强篇 Data Augmentation &#xff08;1&#xff09;图片像素调整…

安全模式进不去,解决方法在这!

“我想让电脑进入安全模式&#xff0c;但无论我怎么操作都无法进入。这是怎么回事呢&#xff1f;我怎么才能让电脑进入安全模式呢&#xff1f;请求帮助&#xff01;” 安全模式是Windows操作系统的一种启动选项&#xff0c;用于解决系统问题和故障。然而&#xff0c;有时候用户…

PON测试,“信”助力 | 信而泰测试解决方案浅析

PON介绍 一、什么是PON网络 PON是“Passive Optical Network”的缩写&#xff0c;是一种基于光纤的网络技术。PON网络通过单向的光信号传输来实现数据、语音和视频等信息的传输。PON网络可以支持多个传输速率和距离要求&#xff0c;因此广泛应用于FTTH、FTTB&#xff08;Fibe…

Three.js 实现模型分解,拆解效果

原理&#xff1a;通过修改模型材质的 x,y,z 轴坐标 positon.set( x,y,z) 来实现拆解&#xff0c;分解的效果。 注意&#xff1a;支持模型材质position 修改的材质类型为 type“Mesh” ,其他类型的材质修改了position 可能没有实际效果 在上一篇 Three.js加载外部glb,fbx,gltf…

金融市场中的机器学习;快手推出自研语言模型“快意”

&#x1f989; AI新闻 &#x1f680; OpenAI可能面临《纽约时报》的起诉&#xff0c;侵犯知识产权引发争议 摘要&#xff1a;OpenAI使用《纽约时报》的文章和图片来训练AI模型&#xff0c;违反了《纽约时报》的服务条款&#xff0c;可能面临巨大损失。此前&#xff0c;也有其…

冠达管理:定增获批后会大涨吗?

近年来&#xff0c;跟着我国资本商场的稳步发展&#xff0c;定向增发&#xff08;定增&#xff09;已成为不少上市公司的一种重要融资方法&#xff0c;其比较于揭露发行股票&#xff0c;更能够满足少量出资者的融资需求。然而&#xff0c;对于很多出资者来说&#xff0c;一个问…

游戏服务端性能测试

导语&#xff1a;近期经历了一系列的性能测试&#xff0c;涵盖了Web服务器和游戏服务器的领域。在这篇文章中&#xff0c;我将会对游戏服务端所做的测试进行详细整理和记录。需要注意的是&#xff0c;本文着重于记录&#xff0c;而并非深入的编程讨论。在这里&#xff0c;我将与…

Visual Studio 2022 你必须知道的实用调试技巧

目录 1、什么是bug&#xff1f; 2.调试是什么&#xff1f;有多重要&#xff1f; 2.1我们是如何写代码的&#xff1f; 2.2又是如何排查出现的问题的呢&#xff1f; ​编辑 2.3 调试是什么&#xff1f; 2.4调试的基本步骤 2.5Debug和Release的介绍 3.Windows环境调试介绍…

spark第四课

countByValue 数据源中相同的值有多少个,也就是WordCount countByKey 表的是键值对中的key出现了几次,与Value的值无关 不推荐collect,因为他是将数据放入内存,但是内存不够大的话,就容易崩,所以使用saveAsTextFile更好,直接放入磁盘. 保存成对象文件,需要序列化 启动了2个 J…

前端PWA应用的相关知识和基础Demo

一、什么是PWA应用&#xff1f; 1、PWA简介 ​ 渐进式Web应用&#xff08;Progressive Web App&#xff09;&#xff0c;简称PWA&#xff0c;是 Google 在 2015 年提出的一种使用web平台技术构建的应用程序&#xff0c;官方认为其核心在于Reliable&#xff08;可靠的&#xf…

修改窗口类的属性将影响所有该类的窗口

正如标题所指出的&#xff1a;窗口类的属性将影响所有由该窗口类创建的窗口。这就是它为什么称之为窗口类的原因。 我用这么多话来强调这一点&#xff0c;似乎是一件显而易见的事情&#xff0c;但我看到许多”解决方案”忽视了这个简单的事实。 在 WNDCLASS&#xff08;或 WND…

Autoware.universe与Carla(二进制版)联调

文章目录 一、Carla的使用1.1 二进制Carla的安装1.2 Carla API的使用1.2.1 增加行人流和车流1.2.3 改变服务器的时间&#xff0c;光照&#xff0c;天气1.2.3 手动控制车辆1.1.4 车辆的自动驾驶 二、Universe与Carla联调2.1 设置OpenPlanner2.2 重新编译并运行 本文介绍了 Autow…

Nginx反向代理配置流式响应

Nginx 是通过缓存响应内容来处理请求的。也就是说&#xff0c;当 Nginx 接收到完整的响应后&#xff0c;才会将其发送给客户端&#xff0c;所以默认不支持流式响应&#xff0c;这里讲讲 Nginx 反向代理中怎么配置流式响应&#xff1f; 一、使用背景 最近使用 Egg.js 搭建自动化…

冠达管理:非银金融是什么?

非银金融&#xff08;Non-banking Financial Institutions&#xff0c;简称非银&#xff09;是指除了传统的银行以外的其他金融机构。与银行不同的是&#xff0c;非银金融机构没有颁发钱银的权利&#xff0c;但在金融市场中发挥着重要的效果。在全球范围内&#xff0c;非银金融…

每日刷题(翻转+二分+BFS)

食用指南&#xff1a;本文为作者刷题中认为有必要记录的题目 ♈️今日夜电波&#xff1a;凄美地—郭顶 1:10 ━━━━━━️&#x1f49f;──────── 4:10 &#x1f504; ◀️ ⏸ ▶️ ☰…

Android 标准语音识别框架:SpeechRecognizer 的封装和调用

前言 此前&#xff0c;笔者梳理了语音相关的两篇文章&#xff1a; 如何打造车载语音交互&#xff1a;Google Voice Interaction 给你答案&#xff1a;介绍的是 3rd Party App 如何通过 Voice Interaction API 快速调用系统的语音交互服务快速完成确认、选择的基础语音对话直面…

创建 github 项目,并自动化配置

一 新建项目 github 创建新项目&#xff0c;并自动化部署 二 github 到本地 三 自动化部署

苹果iOS17引入新功能:实时显示充电设施信息,续航焦虑不再

据外媒9to5mac报道&#xff0c;苹果公司计划在iOS 17中引入一项非常方便电动汽车车主的功能&#xff0c;即iPhone内置的地图应用将实时显示充电设施的可用性信息。在最新发布的iOS 17 Beta 1版本中&#xff0c;这一功能仍在开发阶段&#xff0c;尚缺少一些必要的数据。 据称&am…