当前位置: 首页 > news >正文

06 Shell Script特殊变量和模式匹配

Shell Script特殊变量和模式匹配

一、Shell Script特殊变量

变量含义
$0当前脚本的文件名
$n传递给脚本或函数的参数。n是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#传递给脚本或函数的个数
$*传递给脚本或函数的所有函数
$@传递给脚本或函数的所有参数。被双引号(”")包含时,与$*稍有不同,下面将会讲到。
$?上个命令的退出状态,或函数的返回值。
$$当前Shell进程ID。对于Shell 脚本,就是这些脚本所在的进程ID。

​ 举例:

# 创建sh脚本
[root@localhost ~]# vi myshell.sh  # 写入内容
#!/bin/bashecho "sh脚本文件名为:$0"
echo "收到的第一个参数为:$1"
echo "共接收到$#个参数"
id host
echo "获取host的id(是否非0):$?"
echo "当前shell进程ID:$$"# 运行结果
[root@localhost ~]# bash myshell.sh a b c
sh脚本文件名为:myshell.sh
收到的第一个参数为:a
共接收到3个参数
id: host: no such user
获取host的id:1
当前shell进程ID:1575

二、shell的模式匹配

​ 通配符

​ ?:匹配单个任意字符

​ * :匹配0到多个任意字符

​ [] :匹配中括号内规定的单个字符

​ shell自身有能力辨别通配符

​ 模式匹配中还有正则表达式,需要用户空间程序自身来处理

​ 发生在路径扩展中的模式匹配(通配符)

# 创建几个文件
[root@localhost ~]# touch aa abc ac a1 a2 a3# 查看
[root@localhost ~]# ls
a1  a2  a3  aa  abc  ac  myshell.sh# 查看a开头,后面跟一个字符的
[root@localhost ~]# ls a?  
a1  a2  a3  aa  ac# 查看所有以a开头的文件
[root@localhost ~]# ls a*
a1  a2  a3  aa  abc  ac# 查看以a1-a3的文件
[root@localhost ~]# ls a[1-3]
a1  a2  a3

三、shell的模式匹配在变量中的应用

​ 变量取值过程中可以加入模式匹配

​ 从右边开始匹配并删除最小的匹配后缀:${变量%匹配规则}

​ 从右边开始匹配并删除最大的匹配后缀:${变量%%匹配规则}

​ 从左边开始匹配并删除最小的匹配前缀:${变量#匹配规则}

​ 从左边开始匹配并删除最大的匹配前缀:${变量##匹配规则}

# 创建sh文件
[root@localhost ~]# vi myshell.sh   # 写入内容
#!/bin/bash
file=/opt/myfile/abc.txt
# 获取除后缀外的文件路径
filePath=${file%.*}
echo "$filePath"
# 获取文件名
echo "${file##/*/}"
# 获取文件后缀
echo "${file#/*.}"
# 获取文件名(不含后缀)
echo "${filePath##/*/}"# 运行结果
[root@localhost ~]# bash myshell.sh 
/opt/myfile/abc
abc.txt
txt
abc

​ 只有在匹配规则中使用了*匹配符号时,%和%%,#和##才有区别


http://www.mrgr.cn/news/27261.html

相关文章:

  • 【C++题解】1580. 扫雷(mine)
  • 【自动驾驶】控制算法(八)横向控制Ⅲ | 代码与模型
  • 【Git】Clone
  • 动手深度学习 线性回归从零开始实现实例
  • STM32(十三):通信协议——USART串口协议
  • 石英砂酸洗废酸处理
  • 五、回溯算法-算法总结
  • 这才是导师认可的论文 / 开题技术路线图
  • 多线程 二维数组 需要装箱
  • leetcode hot100刷题【持续更新】
  • 使用cmake时,生成的makefile的作用是什么?
  • JVM 调优篇7 调优案例2-元空间的优化解决
  • 第十一章 【后端】商品分类管理微服务(11.1)——创建父工程
  • Android应用性能优化
  • Java Exception 异常相关总结
  • 音视频开发常见的开源项目汇总
  • uniapp中使用picker-view选择时间
  • Linux vi常用命令
  • JavaScript性能:使网站快速响应
  • LeetCode题练习与总结:基本计算器 Ⅱ--227