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

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

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

前言

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

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

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

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

字符串

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

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

字符串拼接

#!/bin/bash
a='hello'
b='world'
echo $a $b

结果输出:

[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
hello world
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

长度获取

#!/bin/bash/
a='hello world'
echo ${#a}

结果输出:

[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
11
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

字符串截取

#!/bin/bash
a='hello world'
echo ${a:1} # 从第1个截取到末尾
echo ${a:1:3} # 从第一个位置开始截取3个
echo ${a:0} # 截取全部
echo ${a:-2} # 负数无效 相当于从第0个开始

输出:

[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
ello world
ell
hello world
hello world
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

字符串表达式

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

  • substr: 字符串截取
#!/bin/bash
a=`expr substr 'hello world' 1 2`
echo $a

结果输出:

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

输出:

11
  • index: 字符串首次出现的位置
expr index "hello world" "wo"

输出:

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

输出:

[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./str.sh
11
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

数组

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

语法,可以如下定义:

# 1
array=(value1 value2 ... )
# 2
array=(
    value0
    value1
    value2
    value3
)
# 3
array[0]=value0
array[1]=value1
array[2]=value2

读取数组:

#!/bin/bash
arr=(1 2 3 4 5)
echo ${arr[1]} # 读取下标为1的元素
echo ${arr[*]} # 获取所有元素
echo ${arr[@]}  # 获取所有元素

输出:

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

获取数组长度:

#!/bin/bash
arr=(1 2 3 4 5)
echo ${#arr[1]}  # 获取元素下标为1的长度
echo ${#arr[*]} # 获取所有元素的长度
echo ${#arr[@]} # 获取所有元素的长度

输出:

[root@iZ2ze5vrnucj8nu52fq932Z shell]# ./arr.sh
1
5
5
[root@iZ2ze5vrnucj8nu52fq932Z shell]# 

结束语

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

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

相关文章
|
3天前
|
分布式计算 Hadoop Shell
使用shell脚本实现自动SSH互信功能
使用shell脚本实现自动SSH互信功能
10 1
|
3天前
|
Unix Shell Linux
轻松编写 AIX Shell 脚本
轻松编写 AIX Shell 脚本
11 1
|
4天前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
4天前
|
关系型数据库 MySQL Shell
在Centos7中利用Shell脚本:实现MySQL的数据备份
在Centos7中利用Shell脚本:实现MySQL的数据备份
|
6天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
24 5
|
7天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
7天前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
7天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
15 3
|
13天前
|
弹性计算 运维 监控
|
13天前
|
存储 弹性计算 运维
自动化收集员工信息的Shell脚本
【4月更文挑战第30天】
11 0