您的位置:首页 > 数码常识数码常识
shell脚本编程教程(Shell脚本编写)
2025-05-10人已围观
shell脚本编程教程(Shell脚本编写)
1 shell概述1.1 什么是ShellShell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便远程远程程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell脚本编写1 shell概述1.1 什么是Shell
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
shell脚本编程如同其他编程语言的一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以运行了,而linux下的shell种类众多,常用的用:
Bourne Shell(/usr/bin/sh或/bin/sh)Bourne Again Shell(/bin/bash)C Shell(/usr/bin/csh)K Shell(/usr/bin/ksh)Shell for Root(/sbin/sh)… …
在诸多linux发行版系统中,最常用的就是Bash,就是Bourne Again Shell,因为其能工提供环境变量以配置用户shell环境,支持历史记录、内置算数功能、支持通配符表达式等高效性能,将linux常用命令进行的简化,被广泛应用于Debian系列的linux发行版中。
2 Shell脚本的执行方式
运行shell脚本的方法有两种:
作为可执行程序运行作为解释器参数运行
首先我们先学习一个输出命令echo
echo命令还可显示复杂的输出格式
显示普通的字符串
显示转义字符
显示变量
显示换行
显示结果定向重定向文件
显示command命令执行结果
echo命令还有其他使用规则,可以通过man echo 进行查询
2.1 编写第一个脚本
3 Bash基本功能3.1 历史命令与补全命令3.1.1 历史命令
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中修改
历史命令的调用
使用上、下箭头调用以前的历史命令使用“!n”重复执行第n条历史命令使用“!!”重复执行上一条命令使用“!字串”重复执行最后一条以该字串开头的命令3.1.2 命令与文件补全在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全3.2 命令别名与常用快捷键3.2.1 命令别名
让别名永久生效
删除别名
3.2.2 Bash常用快捷键3.3 输入输出重定向3.3.1 输出重定向3.3.2 输入重定向
3.4 多命令顺序执行与管道符3.4.1 多命令顺序执行
举例:
3.4.2 管道符
3.4.3 grep命令
3.5 通配符和其他特殊符号3.5.1 通配符
举例:
3.5.2 Bash中其他特殊符号
单引号和双引号
4 Bash变量
什么是变量?
变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用户保存暂时信息。
变量设置规则
变量名称可以由字母、数字和下划线组成,但不能以数字开头。变量的默认类型都是字符串型变量用等号连接值,等号左右两侧不能有空格。变量的值如果有空格,需要使用单引号或者双引号苦括起来。不能使用标点符号4.1 用户自定义变量
本地变量
4.2 环境变量
这种变量主要保存的是和系统操作相关的数据。
设置环境变量
4.3 位置参数变量
这种变量主要是用来向脚本中传递参数或者数据的,变量名不能自定义,变量作用是固定的,
举例:
4.4 预定义变量
是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
举例:
举例:接收键盘输入
5 Bash运算符5.1 数值运算与运算符5.1.1 数值运算
数值运算-方法1
expr或let数值运算工具-方法2
$((运算式)) 或 “$[运算式]”-方法3
5.1.2 运算符
举例:
5.2 变量测试与内容替换
举例:
6 环境变量配置文件6.1 环境变量配置文件简介6.1.1 source命令
6.1.2 配置文件简介
环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PSI、HOSTNAME等默认环境变量。
6.2 环境变量配置文件作用
/etc/profile的作用:
USER变量LOGNAME变量MAIL变量PATH变量HOSTNAME变量HISTSIZE变量umask调用/etc/profile.d/*.sh文件
~/.bash_profile的作用:
调用~/.bashrc文件在PATH变量后加入了“:$HOME/bin”这个目录6.3 其他配置文件和登录信息6.3.1 注销时生效的环境变量配置文件
6.3.2 其他配置文件
6.3.3 Shell登录信息
本地终端欢迎信息:/etc/issue
远程终端欢迎信息:/etc/issue.net
转义符在/etc/issue.net文件中不能使用是否显示此欢迎信息,是有ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net”行才能显示(记得重启SSH服务)
登陆后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息
7 基础正则表达式7.1 正则表达式与通配符正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。7.2 基础正则表达式
“*”前一个字符匹配0次或者任意多次
"."匹配除了换行符外任意一个字符
"^" 匹配行首,“$” 匹配行尾
“[ ]”匹配中括号中指定的任意一个字符,只匹配一个字符
"[^]" 匹配除中括号的字符以外的任意一个字符
"{n}" 表示前面的字符恰好出现n次
"{n,}" 表示其前面的字符出现不小于n次
"{n,m}" 匹配其前面的字符至少出现n次,最多出现m次
7.3 字符截取命令7.3.1 cut字段提取命令
举例:
注:cut不能作用于空格作为分隔符,并提取数据。只能用作制表符截取字符。
7.3.2 printf命令
输出格式:
7.3.3 awk命令
FS内置变量
举例:
7.3.4 sed命令
sed是一种几乎包括在所有UNIX平台的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
举例:
字符串替换
8 条件判断8.1 文件运算符操作符作用-b 文件判断该文件是否为块设备文件,如果是,则返回真。-c 文件判断该文件是否为字符设备文件,如果是,则返回真。-d 文件判断该文件是否为目录文件,如果是,则返回真。-e 文件判断该文件是否存在,如果存在,则返回真。-f 文件判断该文件是否为普通文件,如果是,则返回真。-L 文件判断该文件是否为符号链接文件,如果是,则返回真。-p 文件判断该文件是否为管道文件,如果是,则返回真。-s 文件判断该文件是否为非空,如果非空,则返回真。-S 文件判断该文件是否为套接字文件,如果是,则返回真。-r 文件判断该文件是否为可读,如果是,则返回真。-w 文件判断该文件是否为可写,如果是,则返回真。-x 文件判断该文件是否为可执行,如果是,则返回真。-u 文件判断该文件是否拥有SUID权限,如果是,则返回真。-g 文件判断该文件是否拥有SGID权限,如果是,则返回真。-k 文件判断该文件是否拥有SBit权限,如果是,则返回真。
两种判断格式
举例:
8.2 两个文件之间进行比较测试选项作用文件1 -nt 文件2判断文件1的修改时间是否比文件2的新,如果新则返回真。文件1 -ot 文件2判断文件1的修改时间是否比文件2的旧,如果旧则返回真。文件1 -ef 文件2判断文件1是否和文件2的Inode号一致,可以理解为两个文件是否为同一个文件,这个判断用于判断硬链接是很好的方法
举例:
8.3 两个整数之间比较测试选项作用整数1 -eq 整数2判断整数1是否和整数2 相等,相等,则返回真。整数1 -ne 整数2判断整数1是否和整数2 不相等,不相等,则返回真。整数1 -gt 整数2判断整数1是否大于整数2 ,大于,则返回真。整数1 -lt 整数2判断整数1是否小于整数2 ,小于,则返回真。整数1 -ge 整数2判断整数1是否大于等于整数2 ,大于等于,则返回真。整数1 -le 整数2判断整数1是否小于等于整数2 ,小于等于,则返回真。
举例:
8.4 字符串的判断测试选项作用-z 字符串判断字符串是否为空,为空则返回真。-n 字符串判断字符串是否为非空,非空则返回真。字符串1==字符串2判断字符串1是否和字符串2 相等,相等则返回真。字符串1 !=字符串2判断字符串1是否和字符串2不相等,不相等则返回真。
举例:
8.5 多重条件判断测试选项作用判断1 -a 判断2逻辑与,判断1和判断2都成立,最终的结果才为真。判断1 -o 判断2逻辑或,判断1和判断2有一个成立,最终的结果就为真。! 判断逻辑非,使原始的判断式取反
举例:
9 流程控制9.1 if语句9.1.1 if条件语句
举例:
9.1.2 if else条件语句
举例1:
举例2:
举例3:
9.1.3 多分支if条件语句
举例:
9.2 case语句
举例:
9.3 for循环
语法一
举例:
语法二
举例1:
举例2:
9.4 while循环
while循环是不定循环,也称条件循环。只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止,这就和for的固定循环就不太一样了。
举例:
9.5 unit循环
until循环,和while循环相反,until循环时,只要条件判断式不成立,则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。
上面就是小居数码小编今天给大家介绍的关于(Shell脚本编写)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
办公表格制作excel教程(如何制作办公表格)
修改pdf中的文本的字体教程步骤(怎样修改pdf中的文本的字体)
ps给衣服换颜色的方法自学教程(ps给衣服换颜色)
cad中改变文字的大小图文教程(cad中怎样改变文字大小)
155935
1 shell概述1.1 什么是ShellShell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便远程远程程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell脚本编写1 shell概述1.1 什么是Shell
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
shell脚本编程如同其他编程语言的一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以运行了,而linux下的shell种类众多,常用的用:
Bourne Shell(/usr/bin/sh或/bin/sh)Bourne Again Shell(/bin/bash)C Shell(/usr/bin/csh)K Shell(/usr/bin/ksh)Shell for Root(/sbin/sh)… …
在诸多linux发行版系统中,最常用的就是Bash,就是Bourne Again Shell,因为其能工提供环境变量以配置用户shell环境,支持历史记录、内置算数功能、支持通配符表达式等高效性能,将linux常用命令进行的简化,被广泛应用于Debian系列的linux发行版中。
2 Shell脚本的执行方式
运行shell脚本的方法有两种:
作为可执行程序运行作为解释器参数运行
首先我们先学习一个输出命令echo
echo命令还可显示复杂的输出格式
显示普通的字符串
显示转义字符
显示变量
显示换行
显示结果定向重定向文件
显示command命令执行结果
echo命令还有其他使用规则,可以通过man echo 进行查询
2.1 编写第一个脚本
3 Bash基本功能3.1 历史命令与补全命令3.1.1 历史命令
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中修改
历史命令的调用
使用上、下箭头调用以前的历史命令使用“!n”重复执行第n条历史命令使用“!!”重复执行上一条命令使用“!字串”重复执行最后一条以该字串开头的命令3.1.2 命令与文件补全在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全3.2 命令别名与常用快捷键3.2.1 命令别名
让别名永久生效
删除别名
3.2.2 Bash常用快捷键3.3 输入输出重定向3.3.1 输出重定向3.3.2 输入重定向
3.4 多命令顺序执行与管道符3.4.1 多命令顺序执行
举例:
3.4.2 管道符
3.4.3 grep命令
3.5 通配符和其他特殊符号3.5.1 通配符
举例:
3.5.2 Bash中其他特殊符号
单引号和双引号
4 Bash变量
什么是变量?
变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用户保存暂时信息。
变量设置规则
变量名称可以由字母、数字和下划线组成,但不能以数字开头。变量的默认类型都是字符串型变量用等号连接值,等号左右两侧不能有空格。变量的值如果有空格,需要使用单引号或者双引号苦括起来。不能使用标点符号4.1 用户自定义变量
本地变量
4.2 环境变量
这种变量主要保存的是和系统操作相关的数据。
设置环境变量
4.3 位置参数变量
这种变量主要是用来向脚本中传递参数或者数据的,变量名不能自定义,变量作用是固定的,
举例:
4.4 预定义变量
是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
举例:
举例:接收键盘输入
5 Bash运算符5.1 数值运算与运算符5.1.1 数值运算
数值运算-方法1
expr或let数值运算工具-方法2
$((运算式)) 或 “$[运算式]”-方法3
5.1.2 运算符
举例:
5.2 变量测试与内容替换
举例:
6 环境变量配置文件6.1 环境变量配置文件简介6.1.1 source命令
6.1.2 配置文件简介
环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PSI、HOSTNAME等默认环境变量。
6.2 环境变量配置文件作用
/etc/profile的作用:
USER变量LOGNAME变量MAIL变量PATH变量HOSTNAME变量HISTSIZE变量umask调用/etc/profile.d/*.sh文件
~/.bash_profile的作用:
调用~/.bashrc文件在PATH变量后加入了“:$HOME/bin”这个目录6.3 其他配置文件和登录信息6.3.1 注销时生效的环境变量配置文件
6.3.2 其他配置文件
6.3.3 Shell登录信息
本地终端欢迎信息:/etc/issue
远程终端欢迎信息:/etc/issue.net
转义符在/etc/issue.net文件中不能使用是否显示此欢迎信息,是有ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net”行才能显示(记得重启SSH服务)
登陆后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息
7 基础正则表达式7.1 正则表达式与通配符正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。7.2 基础正则表达式
“*”前一个字符匹配0次或者任意多次
"."匹配除了换行符外任意一个字符
"^" 匹配行首,“$” 匹配行尾
“[ ]”匹配中括号中指定的任意一个字符,只匹配一个字符
"[^]" 匹配除中括号的字符以外的任意一个字符
"{n}" 表示前面的字符恰好出现n次
"{n,}" 表示其前面的字符出现不小于n次
"{n,m}" 匹配其前面的字符至少出现n次,最多出现m次
7.3 字符截取命令7.3.1 cut字段提取命令
举例:
注:cut不能作用于空格作为分隔符,并提取数据。只能用作制表符截取字符。
7.3.2 printf命令
输出格式:
7.3.3 awk命令
FS内置变量
举例:
7.3.4 sed命令
sed是一种几乎包括在所有UNIX平台的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
举例:
字符串替换
8 条件判断8.1 文件运算符操作符作用-b 文件判断该文件是否为块设备文件,如果是,则返回真。-c 文件判断该文件是否为字符设备文件,如果是,则返回真。-d 文件判断该文件是否为目录文件,如果是,则返回真。-e 文件判断该文件是否存在,如果存在,则返回真。-f 文件判断该文件是否为普通文件,如果是,则返回真。-L 文件判断该文件是否为符号链接文件,如果是,则返回真。-p 文件判断该文件是否为管道文件,如果是,则返回真。-s 文件判断该文件是否为非空,如果非空,则返回真。-S 文件判断该文件是否为套接字文件,如果是,则返回真。-r 文件判断该文件是否为可读,如果是,则返回真。-w 文件判断该文件是否为可写,如果是,则返回真。-x 文件判断该文件是否为可执行,如果是,则返回真。-u 文件判断该文件是否拥有SUID权限,如果是,则返回真。-g 文件判断该文件是否拥有SGID权限,如果是,则返回真。-k 文件判断该文件是否拥有SBit权限,如果是,则返回真。
两种判断格式
举例:
8.2 两个文件之间进行比较测试选项作用文件1 -nt 文件2判断文件1的修改时间是否比文件2的新,如果新则返回真。文件1 -ot 文件2判断文件1的修改时间是否比文件2的旧,如果旧则返回真。文件1 -ef 文件2判断文件1是否和文件2的Inode号一致,可以理解为两个文件是否为同一个文件,这个判断用于判断硬链接是很好的方法
举例:
8.3 两个整数之间比较测试选项作用整数1 -eq 整数2判断整数1是否和整数2 相等,相等,则返回真。整数1 -ne 整数2判断整数1是否和整数2 不相等,不相等,则返回真。整数1 -gt 整数2判断整数1是否大于整数2 ,大于,则返回真。整数1 -lt 整数2判断整数1是否小于整数2 ,小于,则返回真。整数1 -ge 整数2判断整数1是否大于等于整数2 ,大于等于,则返回真。整数1 -le 整数2判断整数1是否小于等于整数2 ,小于等于,则返回真。
举例:
8.4 字符串的判断测试选项作用-z 字符串判断字符串是否为空,为空则返回真。-n 字符串判断字符串是否为非空,非空则返回真。字符串1==字符串2判断字符串1是否和字符串2 相等,相等则返回真。字符串1 !=字符串2判断字符串1是否和字符串2不相等,不相等则返回真。
举例:
8.5 多重条件判断测试选项作用判断1 -a 判断2逻辑与,判断1和判断2都成立,最终的结果才为真。判断1 -o 判断2逻辑或,判断1和判断2有一个成立,最终的结果就为真。! 判断逻辑非,使原始的判断式取反
举例:
9 流程控制9.1 if语句9.1.1 if条件语句
举例:
9.1.2 if else条件语句
举例1:
举例2:
举例3:
9.1.3 多分支if条件语句
举例:
9.2 case语句
举例:
9.3 for循环
语法一
举例:
语法二
举例1:
举例2:
9.4 while循环
while循环是不定循环,也称条件循环。只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止,这就和for的固定循环就不太一样了。
举例:
9.5 unit循环
until循环,和while循环相反,until循环时,只要条件判断式不成立,则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。
上面就是小居数码小编今天给大家介绍的关于(Shell脚本编写)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
办公表格制作excel教程(如何制作办公表格)
修改pdf中的文本的字体教程步骤(怎样修改pdf中的文本的字体)
ps给衣服换颜色的方法自学教程(ps给衣服换颜色)
cad中改变文字的大小图文教程(cad中怎样改变文字大小)
155935
很赞哦! ()