Linux脚本双引号字符去除,shell命令去除字符串里双引号

echo \"refs/changes/84/727284/1\" | sed 's/\"//g'

shell变量内字符替换和变量字符修改

a=12345123

#将${a}里的第一个123替换为321

b=${a/123/321};

echo "echo variable a"

echo $a

echo "echo variable b"

echo $b

a=12345123

#将${a}里的所有123替换为321

b=${a//123/321};

echo "echo variable a"

echo $a

echo "echo variable b"

echo $b

不过,假如你只是看到 ${ } 只能用来定界变量名称的话,那你就实在太小看bash了 !

为了完整起见,我们这里用了一些例子加以说明 ${ } 的一些特异功能:

假设我们定义了一个变量为:

file=/dir1/dir2/dir3/my.file.txt

我们可以用 ${ } 分别替换获取的不同的值:

${file#*/}:拿掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt

${file##*/}:拿掉最后一条 / 及其左边的字串:my.file.txt

${file#*.}:拿掉第一個 . 及其左边的字串:file.txt

${file##*.}:拿掉最后一個 . 及其左边的字串:txt

${file%/*}:拿掉最后條 / 及其右边的字串:/dir1/dir2/dir3

${file%%/*}:拿掉第一条 / 及其右边的字串:(空值)

${file%.*}:拿掉最后一個 . 及其右边的字串:/dir1/dir2/dir3/my.file

${file%%.*}:拿掉第一個 . 及其右边的字串:/dir1/dir2/dir3/my

记忆的方法为:

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

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

单一符号是最小匹配;两个字符是最大匹配。

${file:0:5}:提取最左边的 5 個字节:/dir1

${file:5:5}:提取第 5 個字节右边的连续 5 個字节:/dir2

变量值里的字符串做替换:

${file/dir/path}:将第一個 dir 提換为 path:/path1/dir2/dir3/my.file.txt

${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt

变量值里的字符串里,删除指定字符

${file/dir}:将第一個 dir 删除:/1/dir2/dir3/my.file.txt

${file//dir}:删除所有dir字符:/1/2/3/my.file.txt

利用 ${ } 还可针对不同的变数状态赋值(没设定、空值、非空值):

${file-my.file.txt} :假如 $file 没有设定,则使用 my.file.txt 作传回值。(空值及非空值时不作处理)

${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用 my.file.txt 作传回值。 (非空值时不作处理)

${file+my.file.txt} :假如 $file 设为空值或非空值,均使用 my.file.txt 作传回值。(没设定时不作处理)

${file:+my.file.txt} :若 $file 为非空值,则使用 my.file.txt 作传回值。 (没设定及空值时不作处理)

${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。 (空值及非空值时不作处理)

${file:=my.file.txt} :若 $file 没设定或为空值,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。 (非空值时不作处理)

${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至 STDERR。 (空值及非空值时不作处理)

${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (非空值时不作处理)

tips:

以上的理解在于, 你一定要分清楚 unset 与 null 及 non-null 这三种赋值状态.

一般而言, : 与 null 有关, 若不带 : 的话, null 不受影响, 若带 : 则连 null 也受影响.

还有哦,${#var} 可计算出变量值的长度:

${#file} 可得到 27 ,因为 /dir1/dir2/dir3/my.file.txt 刚好是 27 个字节...

将带有前缀为prefix的参数名打印出来

${!prefix*}

${!prefix@}

下面这个是针对name数组的,打印出来name数组有哪些下标

${!name[@]}

${!name[*]}

可以理解下下面这几个例子:

986ac558f9b9871b113ab6b36ba200cc.png

获取字符串长度

[root@cnblogs ~]# testvar="12345"

[root@cnblogs ~]# echo ${#testvar}

5

对变量值进行大小写转换

将变量值中的小写字母装换为大写

语法:echo ${var^^}

[root@cnblogs ~]# testvar="case conversion"

[root@cnblogs ~]# echo ${testvar}

case conversion

[root@cnblogs ~]# echo ${testvar^^}

CASE CONVERSION

[root@cnblogs ~]#

将变量值中的大写字母装换为小写

语法:echo ${var,,}

[root@cnblogs ~]# testvar="CASE CONVERSION"

[root@cnblogs ~]# echo ${testvar}

CASE CONVERSION

[root@cnblogs ~]# echo ${testvar,,}

case conversion

[root@cnblogs ~]#

当变量值为空或者非空时操作变量

${var:=value}

上述语法表示如果var为空,则返回value,并将value赋值给var,如果var不为空,则返回var本身的值,var不为空时,var值不会被改变,var为空时,var的值会被设置成指定值。

${var:-value}

上述语法表示如果var为空,则返回value,如果var不为空,则返回var的值,无论var是否为空,var本身的值不会改变。

${var:+value}

上述语法表示如果var不为空,则返回value,如果var为空,则返回空值,无论var是否为空,var本身的值不会改变。

${var:?error_info}

上述语法表示如果var为空,那么在当前终端打印error_info,如果var的值不为空,则返回var的值,无论var是否为空,var本身的值都不会改变。

从指定位置截取字符串,截取到字符串的末尾

#下例表示从正数第4个字符以后开始截取,直到字符串的末尾。

[root@cnblogs ~]# website="www.cnblogs.com"

[root@cnblogs ~]# echo ${website:4}

cnblogs.com

[root@cnblogs ~]#

#下例表示从倒数第4个字符开始截取,直到字符串的末尾

#注意:下例中的"负号"与"冒号"之间必须存在0或者空格

[root@cnblogs ~]# website="www.cnblogs.com"

[root@cnblogs ~]# echo ${website:0-4}

.com

[root@cnblogs ~]# echo ${website: -4}

.com

[root@cnblogs ~]#

从指定位置截取字符串,并且截取指定的长度

#下例表示从正数第4个字符以后开始截取,截取7个字符。

[root@cnblogs ~]# website="www.cnblogs.com"

[root@cnblogs ~]# echo ${website:4:7}

cnblogs

[root@cnblogs ~]#

下例表示从倒数第11个字符开始截取,截取7个字符。

[root@cnblogs ~]# website="www.cnblogs.com"

[root@cnblogs ~]# echo ${website:0-11:7}

cnblogs

[root@cnblogs ~]#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12000+字Java反射,一起全面了解Java反射机制,为学习框架铺路

文章目录Java反射机制理解Class类获取Class类实例类的加载过程类加载器ClassLoader创建运行时类的对象获取运行时类的结构调用运行时类的指定结构动态代理Java反射机制 Reflection是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的…

linux 中 id指令,Linux id 命令

要登入一台计算机,我们需要一个用户名。用户名是一个可以被计算机识别的身份。基于此,计算机会对使用这个用户名的登陆的人应用一系列的规则。在Linux系统下,我们可以使用 id 命令。什么是 id 命令id 命令可以显示真实有效的用户 ID(UID) 和组…

提高Java表达能力!不落伍一起掌握Java8中Lambda表达式、函数式接口及方法构造器数组引用

文章目录函数式接口概述函数式接口示例内置函数式接口Lambda简述Lambda语法方法引用构造器引用数组引用函数式接口概述 只包含一个抽象方法的接口,称为函数式接口。 可以通过 Lambda 表达式来创建该接口的对象。 可以在一个接口上使用 FunctionalInterface 注解&…

一文一起,学习功能强大的Java8新StreamAPI,让集合的操作得心应手

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) 文章目录Stream 概述Stream 实例化Stream 中间操作Stream 终止…

java erlang_Java开发人员的Erlang

java erlang您可能没有注意到,但是距离我上次发布博客已经过去了几个星期。 这是由于我的Soleus骨折了,而且我的腿是石膏模型。 不能动弹,我认为调查完全不同的东西是个好主意–要么看那一天,要么看白天的电视,尽管Koj…

新!详细!win10下MySQL数据库干净卸载安装与配置

微信公众号:创享日记 发送:sqlyog 获取SQLyog客户端安装包 文章目录官方下载卸载清除安装变量配置测试SQLyog客户端下载官方下载 链接直达:点击官方下载 1、选择 2、下载:点击download进入下载页面,选择“No thanks,…

linux系统基本使用教程,Linux系统的基本使用入门

终端:用户与主机交互,必然会使用到的设备,在Linux中也使用文件进行标识物理终端:直接接入到本机的显示器和键盘设备:又叫控制台:console物理终端设备文件:/dev/console虚拟终端:附加在物理终端之…

最基础,MySQL基础查询SELECT

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) 1、查询表中字段 USE 要操作的数据库名; SELECT 查询的字段 …

rest和rest ful_为什么REST如此重要

rest和rest ful这篇文章致力于REST,一种塑造Web服务的架构风格,以及IT历史上最容易被误解的概念。 这篇文章针对的是正在设计Web服务api的人,他们没有完全了解REST的实际含义。 我想给你个主意。 这篇文章也发给了那些想知道REST意味着什么的…

流利的接口不利于维护

流利的接口 (最初由Martin Fowler 创造)是一种非常方便的与OOP中的对象进行通信的方式。 它使他们的外墙更易于使用和理解。 但是,它破坏了它们的内部设计,使它们更难以维护。 Marco Pivetta在他的博客文章Fluent Interfaces is E…

减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现

文章目录基本介绍应用实例基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: ①记录数组一共有几行几列,有多少个不同的值(0除外)。 ②把具有不同值…

C语言课程设计报告输出杨辉三角,C语言学习:在屏幕上输出杨辉三角

杨辉三角的规律是:它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。 代码如下:#include#includeint main(){int i,j,k,arr[10][10]{0};/*arr[11][11]必须初始化,初始化为{0}*/printf("打印出杨辉三角&…

习惯性朴实简单!一起学习MySQL常见单行函数,字符数学日期流程控制

文章目录一、字符函数二、数学函数三、日期函数四、其他函数五、流程控制函数一、字符函数 1、大小写控制函数 ①UPPER():转换成大写 SELECT UPPER(Hello);②LOWER():转换成小写 SELECT LOWER(Hello);2、字符控制函数 ①LENGTH():获取参数…

不可上位!数据结构队列,老实排队,Java实现数组模拟队列及可复用环形队列

文章目录队列简介数组模拟队列(无法复用)数组模拟环形队列(可复用)队列简介 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即先存入队列的数据,先取出,后存入的后取出…

多对一!分组查询!MySQL分组函数,聚合函数,分组查询

文章目录一、简单使用二、搭配DISTINCT去重三、COUNT()详细介绍四、分组查询一、简单使用 SUM:求和(一般用于处理数值型) AVG:平均(一般用于处理数值型) MAX:最大(也可以用于处理字…

数据结构单链表SingleLinkedList,Java实现单链表增删改查

文章目录链表介绍应用示例链表介绍 链表是有序的列表,但是它在内存中是存储是不连续的,如下: 链表是以节点的方式来存储,是链式存储: ①每个节点包含data域存储数据,next域指向下一个节点 ②链表的各个节点…

c语言队列原理的实现,c印记(十二):队列queue原理与实现

一、简而言之在百度百科里面摘取了一段关于队列(queue)的介绍:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。…

w ndows7与XP哪个好,Win7系统与Win XP系统哪个更好?Windows7与WindowsXP区别介绍-系统城·电脑系统下载之家...

虽然微软已经停止对xp系统的维护,但是仍有不少用户有这样一个疑惑:Win7系统与WinXP系统哪个更好?接下来,小编就向大家具体介绍Windows7与WindowsXP的区别,让你知道到底哪个系统会更好一些。首先跟系统城小编一起来看微…

一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接

文章目录笛卡尔乘积连接查询分类等值连接非等值连接自连接外连接交叉连接连接查询又称为多表查询,当查询的字段来自于多个表时,使用连接查询。 笛卡尔乘积 笛卡尔乘积现象:表1有m行,表2有n行,结果有m*n行 发生原因&a…

【PostmanJMeter】使用Postman和JMeter进行signature签名

一、前言 ​ 有些接口的请求会带上sign(签名)进行请求,各接口对sign的签名内容、方式可能不一样,但一般都是从接口的入参中选择部分内容组成一个字符串,然后再进行签名操作, 将结果赋值给sign; 完整规范的接口文档都会…