一起来学Shell脚本编程(四)

一起来学Shell脚本编程(四)

前言

目前正在出一个Shell脚本编程系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~

前面我们学习了Linux的一些基本命令,需要我们在终端手动去执行,但在处理一些复杂的操作就显得有点乏力,需要不停的执行,还很容易出错。有没有一种办法,可以帮助我们执行这一些列操作,方法当然有,那就是通过脚本去解决。

作为服务端开发,shell脚本编程还是要掌握一下的,可以做做基础性的运维,提高工作效率。

本系列主要以Linux Bash为主 ,好了, 废话不多说直接开整吧~

字符串

Shell中最常用的就是字符串数字,字符串可使用单引号也可以使用双引号,主要区别:

  • 双引号里可以有变量,单引号则原样输出
  • 双引号里可以出现转义字符,单引号则原样输出
  • 单引号字串中不能出现单引号,而双引可以

字符串拼接

bash 复制代码
#!/bin/bash

a='hello'
b='world'


echo $a $b

结果输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
hello world
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

长度获取

bash 复制代码
#!/bin/bash/
a='hello world'

echo ${#a}

结果输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
11
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

字符串截取

bash 复制代码
#!/bin/bash

a='hello world'

echo ${a:1} # 从第1个截取到末尾

echo ${a:1:3} # 从第一个位置开始截取3个

echo ${a:0} # 截取全部
 
echo ${a:-2} # 负数无效 相当于从第0个开始

输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
ello world
ell
hello world
hello world
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

字符串表达式

给大家介绍一些常用的,我们直接看例子:

  • substr: 字符串截取
bash 复制代码
#!/bin/bash

a=`expr substr 'hello world' 1 2`

echo $a

结果输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
he
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 
  • match 字符串匹配的长度
bash 复制代码
expr match "hello world" "h.*"

输出:

shell 复制代码
11
  • index: 字符串首次出现的位置
bash 复制代码
expr index "hello world" "wo"

输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
5
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 
  • length: 字符串长度
bash 复制代码
echo length "hello world"

输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
11
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

数组

bash支持一维数组(不支持多维数组),大小不限制

语法,可以如下定义:

bash 复制代码
# 1
array=(value1 value2 ... )

# 2
array=(
    value0
    value1
    value2
    value3
)

# 3
array[0]=value0
array[1]=value1
array[2]=value2

读取数组:

bash 复制代码
#!/bin/bash

arr=(1 2 3 4 5)

echo ${arr[1]} # 读取下标为1的元素
echo ${arr[*]} # 获取所有元素
echo ${arr[@]}  # 获取所有元素

输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./arr.sh
2
1 2 3 4 5
1 2 3 4 5
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

获取数组长度:

bash 复制代码
#!/bin/bash

arr=(1 2 3 4 5)

echo ${#arr[1]}  # 获取元素下标为1的长度
echo ${#arr[*]} # 获取所有元素的长度
echo ${#arr[@]} # 获取所有元素的长度

输出:

shell 复制代码
[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./arr.sh
1
5
5
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

结束语

大家平时在工作的时候就可以灵活运用起来了,多用用就熟悉了,大部分项目中都会用到脚本帮助我们去做一些自动化的工作,从而提高效率,还不容易出错~

本着把自己知道的都告诉大家,如果本文对有所帮助,点赞+关注鼓励一下呗~

Shell脚本编程相关文章

往期Linux相关文章

往期面试题相关文章

项目源码(源码已更新 欢迎star⭐️)

往期设计模式相关文章

设计模式项目源码(源码已更新 欢迎star⭐️)

Kafka 专题学习

项目源码(源码已更新 欢迎star⭐️)

ElasticSearch 专题学习

项目源码(源码已更新 欢迎star⭐️)

往期并发编程内容推荐

推荐 SpringBoot & SpringCloud (源码已更新 欢迎star⭐️)

博客(阅读体验较佳)

相关推荐
清汤饺子2 分钟前
用了大半年 Claude Code,我总结了 16 个实用技巧
前端·javascript·后端
ん贤3 小时前
Go channel 深入解析
开发语言·后端·golang
changhong19866 小时前
如何在 Spring Boot 中配置数据库?
数据库·spring boot·后端
月月玩代码8 小时前
Actuator,Spring Boot应用监控与管理端点!
java·spring boot·后端
XPoet9 小时前
AI 编程工程化:Skill——给你的 AI 员工装上技能包
前端·后端·ai编程
码事漫谈9 小时前
从“功能实现”到“深度优化”:金仓数据库连接条件下推技术的演进之路
后端
码事漫谈10 小时前
数据库查询优化中的谓词下推策略与成本感知优化实践
后端
Amour恋空10 小时前
SpringBoot+Lombok+Logback实现日志
spring boot·后端·logback
廋到被风吹走10 小时前
【LangChain4j】特点功能及使用场景
后端·python·flask
毕设源码-邱学长10 小时前
【开题答辩全过程】以 基于Spring Boot的体育场地预约管理系统为例,包含答辩的问题和答案
java·spring boot·后端