Linux 学习笔记: shell中${} 的用法,删除&替换

字符串的删除
echo${i##*/} 删除 / 前的所有内容
## 删除
tt=$i
echo{tt:22} #取的22位以后的所有字符 file=/dir1/dir2/dir3/my.file.txt

\(<span class="token punctuation">{<!-- --></span>file<span class="token comment">#*/}:删掉第一个/ 及其左边的字符串:dir1/dir2/dir3/my.file.txt</span>
\){file##/}:删掉最后一个/ 及其左边的字符串:my.file.txt

\(<span class="token punctuation">{<!-- --></span>file<span class="token comment">#*.}:删掉第一个. 及其左边的字符串:file.txt</span>
\){file##
.}:删掉最后一个. 及其左边的字符串:txt

\({file%/*}</span>:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
<span class="token variable">\){file%%/}:删掉第一个/ 及其右边的字符串:(空值)

\({file%.*}</span>:删掉最后一个 <span class="token keyword">.</span> 及其右边的字符串:/dir1/dir2/dir3/my.file
<span class="token variable">\){file%%.
}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:

# 是 去掉左边(键盘上#在 $ 的左边)

%是去掉右边(键盘上% 在$ 的右边)

单一符号是最小匹配;两个符号是最大匹配 取子串及替换

\({file:0:5}</span>:提取最左边的5 个字节:/dir1
<span class="token variable">\){file:5:5}:提取第5 个字节右边的连续5个字节:/dir2

也可以对变量值里的字符串作替换:

\({file/dir/path}</span>:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
<span class="token variable">\){file//dir/path}:将全部dir 替换为path:/path1/path2/path3/my.file.txt

\({#var}</span> 可计算出变量值的长度:
<span class="token variable">\){#file} 可得到27 ,因为/dir1/dir2/dir3/my.file.txt 是27个字节

[转帖]Linux 学习笔记: shell中${} 的用法,删除&替换的更多相关文章

  1. [转帖]Linux学习笔记之rpm包管理功能全解

    Linux学习笔记之rpm包管理功能全解 https://www.cnblogs.com/JetpropelledSnake/p/11177277.html rpm 的管理命令 之前学习过 yum 的 ...

  2. linux/linux学习笔记-Shell基础(mooc)

    一.shell概述 shell根据ascII表,将命令翻译为0101...传给内核执行. 内核->shell翻译为命令->用户(操作的界面就是shell,shell=翻译官) linux标 ...

  3. Linux学习笔记 - Shell 函数的使用

    基本语法 funname () { action; return -)):如果不加,将以最后一条命令运行结果,作为返回值. } 示例1:定义并调用无返回值的函数 #!/bin/bash a= b= c ...

  4. Linux学习笔记 - Shell 控制语句

    if 语句 语法: #!/bin/bash a= b= if [ $a -eq $b ] then echo "a 等于 b" elif [ $a -gt $b ] then ec ...

  5. Linux学习笔记 - Shell 输出命令

    1. echo 命令 echo 是基本的shell输出命令,她的语法是: echo string 我们也可以使用她来定制一些输出的格式,具体如下: 输出普通字符串 echo "it is a ...

  6. Linux学习笔记 - Shell 运算符篇

    Shell 运算符分类 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 算数运算符 首先,使用 shell 算数运算符是,需要 ...

  7. Linux学习笔记 -- Shell 数组

    定义 在Shell的世界里,我们只能定义一维数组. 定义数组的时候不需要指定长度,数组的下标从0开始; Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: sh ...

  8. Linux学习笔记 -- Shell 变量

    定义变量 语法: 变量名=值 myVal= 需要注意一下变量明德规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字( ...

  9. linux学习笔记2-linux的常用命令

    第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...

  10. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

随机推荐

  1. MySQL进阶篇:详解存储引擎InnoDB

    本篇基础环境是使用navicat 12和Mysql8.0 MySQL进阶篇:第一章_一.二_存储引擎特点_InnoDB 1.1 存储引擎特点 1.1.1 InnoDB 1). 介绍 InnoDB是一种 ...

  2. STM32+华为云IOT制作酒驾监控系统:上车就监控

    摘要:设计一种安装在驾驶室内,能根据具体功能进行鉴别酒精浓度的系统,一起监督行车安全. 本文分享自华为云社区<基于STM32+华为云IOT设计的酒驾监控系统[玩转华为云]>,作者: DS小 ...

  3. 带你了解AKG正反向算子注册+关联流程

    摘要:简要介绍一下akg正反向算子的注册和关联流程. 本文分享自华为云社区<AKG正反向算子注册+关联>,作者:木子_007 . 一.环境 硬件:eulerosv2r8.aarch64 m ...

  4. Windows 2016 2019 显示桌面图标

    运行cmd窗口 输入命令 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0 弹出桌面图标设置窗口

  5. 通过mongo-driver使用说明 GO 包管理机制

    本篇记录通过GO语言操作mongodb,实现的流程包括: 初始化项目工程 容器方式安装mongo 调试运行和编译运行 go使用mongo的代码如下,go操作mongo的SDK是mongo-driver ...

  6. 【Django-Vue】手机号是否存在接口 多方式登录接口 腾讯云短信介绍和申请 api与sdk

    目录 昨日回顾 今日内容 0 登录注册功能设计 1 短信登录接口 视图类 2 多方式密码登录接口 视图类 序列化类 路由 3 腾讯云短信介绍和申请 3.1api与sdk 补充 练习 昨日回顾 # 你的 ...

  7. leaflet marker 旋转

    leaflet.markerRotation.js 代码(这段代码是从插件 leaflet.polylineDecorator.js 中复制的): // leaflet 实现 marker 旋转 (f ...

  8. AcWing 第 3 场周赛

    比赛链接:Here AcWing 3660. 最短时间 比较四个方向和 \((r,c)\) 的距离 void solve() { ll n, m, r, c; cin >> n >& ...

  9. 【网摘】SQL练习题

    原文链接:Here

  10. L1-018 大笨钟 (10分)

    开始天梯赛专项训练 微博上有个自称"大笨钟V"的家伙,每天敲钟催促码农们爱惜身体早点睡觉.不过由于笨钟自己作息也不是很规律,所以敲钟并不定时.一般敲钟的点数是根据敲钟时间而定的,如 ...