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

Shell Script特殊变量和模式匹配

一、Shell Script特殊变量

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

​ 举例:

# 创建sh脚本
[root@localhost ~]# vi myshell.sh  


# 写入内容
#!/bin/bash

echo "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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值