一起来学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⭐️)

博客(阅读体验较佳)

相关推荐
❀͜͡傀儡师1 分钟前
SpringBoot与Artemis整合,实现航空行李追踪消息中枢系统
java·spring boot·后端
qq_256247052 分钟前
AG-UI:让 AI 走出聊天框的“界面革命”
后端
麦兜*12 分钟前
SpringBoot Actuator监控端点详解,打造生产级应用健康检查
java·spring boot·后端
无限进步_14 分钟前
二叉搜索树(BST)详解:从原理到实现
开发语言·数据结构·c++·ide·后端·github·visual studio
悟能不能悟19 分钟前
Spring Boot 中处理跨域资源
java·spring boot·后端
qq_124987075321 分钟前
基于springboot+vue的无人机共享管理系统(源码+论文+部署+安装)
java·vue.js·spring boot·后端·毕业设计·无人机·计算机毕业设计
源码获取_wx:Fegn089526 分钟前
计算机毕业设计|基于springboot + vue网上超市系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring·课程设计
小阿鑫1 小时前
32岁程序员猝死背后,我的一些真实感受
前端·后端·程序员·代码人生
qq_12498707531 小时前
基于Spring Boot的桶装水配送管理系统的设计与实现(源码+论文+部署+安装)
java·前端·spring boot·后端·spring·毕业设计·计算机毕业设计
Sheep Shaun1 小时前
深入理解AVL树:从概念到完整C++实现详解
服务器·开发语言·数据结构·c++·后端·算法