加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

第十四章 切分文件名提取文件扩展名或提取文件名:%、%%和#、##

发布时间:2020-12-15 19:21:00 所属栏目:安全 来源:网络整理
导读:第十四章 切分文件名提取文件扩展名或提取文件名:%、%%和#、 作用 有些脚本要根据文件名进行各种处理,有时候需要保留文件名抛弃文件后缀,也有时候需要文件后缀不要文件名,这类提取文件部分的操作使用shell的内建功能就能实现。需要用到的几个操作符有:%

第十四章 切分文件名提取文件扩展名或提取文件名:%、%%和#、

作用

有些脚本要根据文件名进行各种处理,有时候需要保留文件名抛弃文件后缀,也有时候需要文件后缀不要文件名,这类提取文件部分的操作使用shell的内建功能就能实现。需要用到的几个操作符有:%、%%、#、##

实例

从右向左匹配:%和%%操作符的示例

[root@ceshi jinghao]# cat t.txt 
#!/bin/bash
file_name='test.text'
name=${file_name%.*}
echo file name is: $name

[root@ceshi jinghao]# /bin/sh t.txt 
file name is: test

# ${var%.*} 含义:从$var中删除位于%右侧的通配符字符串,通配符从右向左进行匹配。
#现在给name赋值,name=test.text,name通配符从右向左就会匹配到.text,所以从$var中删除匹配到的结果。
# % 属于非贪婪操作符,它是从右向左匹配最短结果;%%属于贪婪匹配,会从右向左匹配符合条件的最长字符串。

[root@ceshi jinghao]# cat t2.txt     
#!/bin/bash

file_name='test.text.bak.old.123'
name=${file_name%%.*}
echo file name is: $name
[root@ceshi jinghao]# /bin/sh t2.txt  #当使用%% 结果
file name is: test

[root@ceshi jinghao]# /bin/sh t2.txt  #当使用% 结果
file name is: test.text.bak.old

从左向右匹配:#和##操作符示例

#从左向右 最短匹配
[root@ceshi jinghao]# cat a.txt     
#!/bin/bash
file_name='test.text.bak.old.123'
name=${file_name#*.}
echo file name is: $name

[root@ceshi jinghao]# /bin/sh a.txt  #从左向右 最短匹配
file name is: text.bak.old.123

#从左向右 最长匹配
[root@ceshi jinghao]# cat a.txt     
#!/bin/bash
file_name='test.text.bak.old.123'
name=${file_name##*.}
echo file name is: $name

[root@ceshi jinghao]# /bin/sh a.txt  #从左向右 最长匹配
file name is: 123

示例2:定义变量 url="man.linuxde.net"

[root@ceshi jinghao]# url="man.linuxde.net" #定义变量
[root@ceshi jinghao]# echo ${url%.*}    #从右向左 最短匹配
man.linuxde
[root@ceshi jinghao]# echo ${url%%.*}   #从右向左 最长匹配
man
[root@ceshi jinghao]# echo ${url#*.}    #从左向右 最短匹配
linuxde.net
[root@ceshi jinghao]# echo ${url##*.}   #从左向右 最长匹配
net

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读