shell参数替换之##%%
${var#Pattern}, ${var##Pattern}
从$var 开头删除最近或最远匹配$Pattern 的子串.
来自 Example A-7 例子的一部分.
1 # 来自"days-between.sh"例子的一个函数.
2 # 去掉传递进来的参数开头的 0.
3
4 strip_leading_zero () # 去掉开头的 0
5{ #+ 从传递进来的参数中.
6 return=${1#0} # "1"指的是"$1" -- 传进来的参数.
7} # "0"就是我们想从"$1"中删除的子串.
下边是 Manfred Schwarb's 对上边函数的一个改版.
1 strip_leading_zero2 () # 去掉开头的 0,因为如果不去掉的话
# Bash 将会把这个值作为 8 进制解释.
2{
# 打开扩展 globbing.
3 shopt -s extglob
4 local val=${1##+(0)} # 使用局部变量,匹配最长的连续的 0.
# 打开扩展 globbing.
5 shopt -u extglob
6 _strip_leading_zero2=${val:-0}
7 # 如果输入为 0,那么返回 0 来代替"".
8}
另一个例子
1 echo `basename $PWD` # 当前工作目录的 basename.
2 echo "${PWD##*/}" # 当前工作目录的 basename.
3 echo
4 echo `basename $0` # 脚本名字.
5 echo $0 # 脚本名字.
6 echo "${0##*/}" # 脚本名字.
7 echo
8 filename=test.data
9 echo "${filename##*.}" # data
${var%Pattern}, ${var%%Pattern}
从$var 结尾删除最近或最远匹配$Pattern 的子串.
Bash version2 添加了额外的选项.
Example 9-17 参数替换中的模式匹配
################################Start
Script#######################################
1 #!/bin/bash
2 # patt-matching.sh
3
4 # 使用# ## % %%来进行参数替换操作的模式匹配.
5
6 var1=abcd12345abc6789
7 pattern1=a*c # * (通配符) 匹配 a - c 之间的任何字符.
8
9 echo
10 echo "var1 = $var1" # abcd12345abc6789
11 echo "var1 = ${var1}" # abcd12345abc6789
12 # (alternate form)
13 echo "Number of characters in ${var1} = ${#var1}"
14 echo
15
16 echo "pattern1 = $pattern1" # a*c (everything between 'a' and 'c')
17 echo "--------------"
18 echo '${var1#$pattern1} =' "${var1#$pattern1}" # d12345abc6789
19 # 最短的可能匹配, 去掉 abcd12345abc6789 的前 3 个字符
20 # |-| ^^^
21 echo '${var1##$pattern1} =' "${var1##$pattern1}" # 6789
22 # 最远的匹配,去掉 abcd12345abc6789 的前 12 个字符.
23 # |----------| ^^^^
24
25 echo; echo; echo
26
27 pattern2=b*9 # 'b' 到'9'之间的任何字符
28 echo "var1 = $var1" # 还是 abcd12345abc6789
29 echo
30 echo "pattern2 = $pattern2"
31 echo "--------------"
32 echo '${var1%pattern2} =' "${var1%$pattern2}" # abcd12345a
# 最近的匹配, 去掉 abcd12345abc6789 的最后 6 个字符
33
34 # |----| ^^^^
35 echo '${var1%%pattern2} =' "${var1%%$pattern2}" # a
36 # 最远匹配, 去掉 abcd12345abc6789 的最后 12 个字符
37 # |-------------| ^^^^^^
38
39 # 记住, # 和## 从字符串的左边开始,并且去掉左边的字符串,
40 # % 和 %% 从字符串的右边开始,并且去掉右边的子串.
41
42 echo
43
44 exit 0
shell参数替换之##%%相关推荐
- shell 中的参数替换
今天碰到个shell script看了下,发现参数替换是在不懂,google了下,把笔记总结如下: 可替换的参数:处理或/并扩展变量 ${parameter} 和$parameter是相同的,都是表 ...
- Hive基本操作,DDL操作(创建表,修改表,显示命令),DML操作(Load Insert Select),Hive Join,Hive Shell参数(内置运算符、内置函数)等
1. Hive基本操作 1.1DDL操作 1.1.1 创建表 建表语法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_nam ...
- shell正则表达式截取字符串_从CVE20208816聊聊shell参数扩展
1.前言 最近偶然看到了Pi-hole <=4.3.2远程代码执行漏洞(CVE-2020-8816)相关的文章,漏洞成因不是很难,但是里面构造的Exp引起了我的兴趣.由于Pi-hole代码对命令 ...
- shell脚本系列:5、shell参数
shell脚本系列:5.shell参数 文章目录 shell脚本系列:5.shell参数 1. 位置参数 2. 特殊参数 2.1 参数* 2.2 参数@ 2.3 参数# 2.4 参数? 2.5 参数- ...
- linux shell 字符串替换字符,关于bash:在shell脚本中替换另一个字符串的一个子字符串...
我有"我爱苏西并结婚",我想把"苏西"改成"萨拉". #!/bin/bash firstString="I love Suzi a ...
- Shell_参数替换(転)
From: http://www.cnblogs.com/yjf512/archive/2013/06/03/3114803.html Bash中的$符号的作用是参数替换,将参数名替换为参数所代表的值 ...
- shell(bash)替换字符串大全
shell(bash)替换字符串大全 1. 替换(只替换一个) 用varrB=${varA/str1/str2} $ var="AAAszip_BBB.zip";var2=${va ...
- shell参数带有空格问题
有shell脚本readFile.shell,它的作用是接收一个文件名称,然后打印出文件的文本内容. #!/bin/bash#打印入参 echo ${1}#打印文本内容 cat `/home/hds/ ...
- excel模板中参数替换
1.准备好Excel模板如图 2.代码实现参数替换 主要代码 private static void generatePaymentNoticeSheet( final XSSFWorkbook wo ...
最新文章
- python跨文件全局变量_Python 进程之间共享数据(全局变量)的方法
- 【elementUI】el-tree搜索时加载子节点对应父节点、父节点对应子节点树
- esp32-cam的原理图
- Linux内核的同步机制---自旋锁
- 安装rime中文输入法
- 对象文件格式分析工具: objdump, nm,ar
- 提升数据分析能力成熟度之四步曲_数据分析师
- php psockopen,基于php socket(fsockopen)的应用实例分析
- 3.4.1 - Numeric Types
- ceres-solver库使用示例
- 面试题之求二叉树的深度
- 生成n*n蛇形矩阵的算法
- 流模型 操作 xml
- Verilog 任意分频器设计
- 基于Ip的刷投票排名及刷百度推广的自动化实现
- 文华财经多个非常实用的期货指标公式,文华财经支撑压力自动画线公式
- 如何在InfoPath2007中接受URL参数
- 【django】class='btn' btn按钮样式
- OpenCV (c++)使用KDTree时,得到正确结果后报Segmentation fault (core dumped)
- java multi tenancy_MybatisPlus 多租户架构(Multi-tenancy)实现详解
热门文章
- 企业员工培训管理系统(JAVA,JSP,SQLSERVER,SSH)
- 单例模式你会几种写法?
- 机器学习作业2编程作业(python):Logistic Regression
- 传智博客学习笔记8--面向对象下
- 判断日期是月末java_判断一个日期是否为月末 | 学步园
- 如果由你来设计 12306.cn,你会怎么设计?
- File类以及文件过滤器
- 【百度前端学院学习笔记】Day6 浮动/BFC
- fck java_java FCK学习使用
- 梳子刻字刻什么好_校园石阶上被刻了1700多个汉字,这次网友却说好