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

博客(阅读体验较佳)

相关推荐
Kiri霧6 小时前
Rust开发环境搭建
开发语言·后端·rust
间彧7 小时前
Spring事件监听与消息队列(如Kafka)在实现解耦上有何异同?
后端
间彧7 小时前
Java如何自定义事件监听器,有什么应用场景
后端
叶梅树7 小时前
从零构建A股量化交易工具:基于Qlib的全栈系统指南
前端·后端·算法
间彧7 小时前
CopyOnWriteArrayList详解与SpringBoot项目实战
后端
间彧7 小时前
SpringBoot @FunctionalInterface注解与项目实战
后端
程序员小凯7 小时前
Spring Boot性能优化详解
spring boot·后端·性能优化
Asthenia04127 小时前
问题复盘:飞书OAuth登录跨域Cookie方案探索与实践
后端
tuine7 小时前
SpringBoot使用LocalDate接收参数解析问题
java·spring boot·后端
W.Buffer7 小时前
Nacos配置中心:SpringCloud集成实践与源码深度解析
后端·spring·spring cloud