百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux系统Shell脚本语言之循环及判断语句

ahcoder 2025-05-09 16:39 11 浏览

摘要:在日常工作中或多或少都会接触到shell脚本,可以说会shell脚本是一位后端维护及开发的基本功。shell是一种编程语言,而学习一门编程语言语法,最基本的无外乎就是语言中的数据类型定义,for循环以及if else条件判断语句等。

本文主要介绍shell语言的基本语法,详细内容请参考下文。

一、LINUX环境介绍

1、登陆linux系统

2、查看默认shell

二、SHELL变量介绍

说明:shell中对变量的定义,可以分为环境变量和局部变量。

1、环境变量

说明:环境变量在子shell进程中是可见的,可以通过export 关键字进行定义。

需要注意的是,在 Linux 系统中,除了 export 之外,env、set 和 declare 这三个命令也可以显示 Shell 中的变量。但这四个命令是有不同的,差别如下:

执行指令# export查看已定义的环境变量;

同时也可以执行指令# export VAR=value定义新的环境变量。

2、局部变量

说明:局部变量是指在某个shell中生效的变量,这个变量在其他shell中是无效。

3、定义变量

说明:变量的定义可以通过如下方式进行定义,变量名=变量值。

执行指令# name=jason

备注:变量的定义需要注意两点,一是变量名和变量值之间用等号紧紧相连,之间没有任何空格。二是当变量中有空格时必须用引号(单引号,双引号都可以)括起,否则会出现错误。

4、引用变量

说明:一般情况下,定义了变量,可以通过在变量前面加上$符号进行引用。建议用更为标准点的写法,是用${}将变量名括起来。比如:

三、SHELL位置参数

说明:除了通过${变量名} 方式引用变量,还可以通过 $数字 的方式获取shell脚本的参数,$1代表第一个参数,$2代表第二个参数,依次类推。另外 $# 代表参数的个数,$* 或者 $@代表所有参数。

比如写一个脚本输出这些变量。

编写的脚本内容如下

执行指令# sh parameter.sh zhangsan lisi wangwu

备注:注意下shell脚本中单引号和双引号的区别,如果要让输出的语句中引用变量,那么要用双引号。

四、SHELL数组语法

说明:在shell脚本中还有个经常用到的数组,与其他语言不同的是,shell脚本中的数据只支持一维数组。数组的定义方式如下,declare 关键字定义数组,其中元素用()括起来,并且元素之间用空格隔开。

1、定义数组

declare arr1=(元素1 元素2),declare可省略。

2、引用数组

echo ${数组名[索引号]}

例子:

echo ${数组名[0]} 含义:获取数组内第一个元素的值(即下标是0的元素值)

echo ${数组名[5]} 含义:获取数组内第六个元素的值(即下标是5的元素值)

3、获取数组的长度

echo ${#数组名[*]} 或者 echo ${#数组名[@]}

4、数组元素的切片

${数组名[@]:起始位置:截取长度} 起始位置从0下标算起

${数组名[@]} 获取整个数组的元素值

例子:

${数组名[@]:0:3}从下标为0的元素值开始截取,总共截取3个元素

${数组名[@]:1:2}从下标为1的元素值开始截取,总共截取2个元素

五、SHELL循环语法

For循环语句语法结构

for variable in (list)

do

command

done

说明:for语句可以遍历一个列表然后对其中每一个元素进行遍历。上述语法中,list既可以是变量也可以是固定数组表达式,也可以命令输出。

执行指令# sh for.sh

六、SHELL条件语法

If条件语句语法结构

if expression; then

command

fi

通过if then fi三个关键字组成了最简单的if语句,其中expression则是前面讲到的判断语句的表达式。

比如:

执行指令# sh if.sh

备注:expression表达式,在shell中可以通过$? 获取上一个shell语句的执行结果,shell命令中规定0才是命令正确执行后的返回结果,其余结果都是不正确的。

让表达式执行比较逻辑的方式有两种,

第一种是通过test expression 的方式,test后面跟表达式,如下所示,比较了两个数字是否相等,返回0说明相等。

第二种方式是使用[] 把表达式括起来,这种方式注意[] 内变量需要与括号相隔一个空格才行。

相关推荐

WordPress外贸站架构深度剖析:如何实现秒级页面响应?

在搭建WordPress外贸独立站时,性能往往是影响转化的隐形杀手。下面分享几点实战经验,帮助你把响应速度从3秒降到1秒以内:1精准PHP版本与扩展选择推荐使用PHP8.1+,并启用Opcache...

nginx配置文件详解(nginx配置文档)

Nginx是一个强大的免费开源的HTTP服务器和反向代理服务器。在Web开发项目中,nginx常用作为静态文件服务器处理静态文件,并负责将动态请求转发至应用服务器(如Django,Flask,et...

网站总是受到攻击打不开怎么办(网站被攻击打不开)

最近我的网站流量呈上升的趋势,经常被同行恶意攻击,但是我的网站还是没有垮,我就详细给遇到和我同样问题的朋友们分享我的网站到底是如何防御住黑客攻击的,因为正常的情况下,我们的客户端发送请求到达服务器端,...

一文读懂限流算法及方案介绍(限流式的范围怎么算)

作者:京东科技康志兴应用场景现代互联网很多业务场景,比如秒杀、下单、查询商品详情,最大特点就是高并发,而往往我们的系统不能承受这么大的流量,继而产生了很多的应对措施:CDN、消息队列、多级缓存、异地...

HTTP/1.1、HTTP/2、HTTP/3 演变(http的发展)

HTTP基本概念HTTP是超文本传输协议,也就是HyperTextTransferProtocol。HTTP常见的状态码有哪些?1xx类状态码属于提示信息,是协议处理中的一种中间状态,实际...

Nginx负载均衡算法详解(5大主流算法)

关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen睿哥。Nginx是大型架构的必备中间件,也是大厂经常考察的内容,下面我就全面来详解Nginx算法@mikechen轮...

Nginx从安装到高可用,一篇搞定(nginx安装windows)

一、Nginx安装1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3、安装依赖环境(1)安装gcc环境yuminstallgc...

一文搞懂!7种常见的限流方式!(限流措施有哪些)

在实际应用中,每个系统或者服务都有其处理能力的极限(瓶颈),即便是微服务中有集群和分布式的夹持,也不能保证系统能应对任何大小的流量,因此,系统为了自保,需要对处理能力范围以外的流量进行“特殊照顾”(比...

探索Apache HttpClient超时时间如何设定?

大家好,我是哪吒。最近在项目遇到了通过HTTP请求,调用第三方接口的问题。一、ApacheHttpClient模拟POST请求,调用第三方接口ApacheHttpClient是一个流行的Java库...

Nginx 1.20.0 稳定版介绍(nginx1.21.0)

nginx最新稳定分支1.20已于2021年4月20日发布,新版本引入了来自1.19.x主线分支的新功能和错误修复,其中包括:使用OCSP进行客户端SSL证书验证引入ssl_rej...

图解常见的限流算法(计数器、滑动窗口计数、漏桶、令牌桶)

哈喽,大家好呀,我是呼噜噜,好久没有更新文章了,今天我们来聊聊在企业级项目中,常见的几种限流手段的原理及其实现什么场景需要限流随着互联网的业务发展,比如秒杀、双十一、618等这些我们耳熟能详,也有被人...

高并发场景下,Nginx性能如何提升10倍?

大家好,我是mikechen。在高并发场景,Nginx是流量入口的第一道防线,如果想拦截亿级流量,需要Nginx合理调优才能应对@mikechen。本文作者:陈睿|mikechen文章来源:mike...

Sentinel源码—8.限流算法和设计模式总结

大纲1.关于限流的概述2.高并发下的四大限流算法原理及实现3.Sentinel使用的设计模式总结1.关于限流的概述保护高并发系统的三把利器:缓存、降级和限流。限流就是通过限制请求的流量以达到保护系统的...

Nginx-性能优化(nginx性能优化)

前言这篇关于Nginx的性能优化,是我查阅资料研究所成,并没有用于实际生产环境,如若你想用于实践,请谨慎测试之后使用。Nginx性能优化,主要是减少磁盘io。请求头、请求体、响应体都在缓冲区操...

两步优化nginx,性能达到10万+并发

Nginx介绍nginx是一款来自俄罗斯开发人员开源的高性能的HTTP服务器和方向代理服务器,因为它的性能非常优秀,而且是免费,所以,在国内被广泛运用于web服务器、负载均衡服务器、邮件代理服务器。它...