广告
返回顶部
首页 > 资讯 > 操作系统 >区分shell中的 反引号、$()和${}
  • 849
分享到

区分shell中的 反引号、$()和${}

shell反引号shell$()shell${} 2022-06-04 23:06:21 849人浏览 薄情痞子
摘要

1.反引号与$()用于命令替换 反引号和$()的作用相同,用于命令替换(command substitution),即完成引用的命令的执行,将其结果替换出来,与变量替换差不多。比如: echo `date '--d

1.反引号与$()用于命令替换

反引号和$()的作用相同,用于命令替换(command substitution),即完成引用的命令的执行,将其结果替换出来,与变量替换差不多。比如:


echo `date '--date=1 hour aGo' +%Y-%m-%d-%H`
#或者
echo $(date '--date=1 hour ago' +%Y-%m-%d-%H)

输出结果是相同的:

2019-02-02-09。

在编写shell脚本时建议使用$(),原因主要有:
(1)反引号与单引号外形相似,容易混淆;
(2)在多层次的复合替换中,里层的反引号需要转义处理(\`) ,而$()则比较直观。例如下面的命令格式是错的:


command1 `command2 `command3``

原本的意图是要在`command2 `command3` `中先将command3替换出来给command2处理,然后再将结果传给command1处理。然而,真正的结果在命令行中却是分成了`command2`与` `两段。正确的输入应该如下:


command1TIRDkyRzG `command2 \`command3\``
#或者换成$()
command1 $(command2 $(command3))

(3)反引号中对于反斜杠有特殊的处理,使用反协议对Shell特殊字符进行转义时需要两个反斜杠,而$()中只需要使用一个反斜杠。比如下面的脚本,需要输出$HOME,而不是环境变量HOME的内容,在反引号中需要对$符使用双反斜杠进行转义,$()中只需要使用一个反斜杠。


var1=`echo \$HOME`		#使用一个反斜杠无法完成对$符的转义
var2=`echo \\$HOME`
var3=$(echo \$HOME)
echo $var1
echo $var2
echo $var3

脚本执行结果:

/root
$HOME
$HOME

综上所述, 反引号是一个老的用法,$()是新的用法,无论是在学习还是实际工作中,建议使用$()。

2.${}用于变量替换

2.1直接变量替换

一般情况下,$var${var}并没有区别,但是用${ }会比较精确的界定变量名称的范围,比方说:


A="dablelv"
echo $AB

原本是打算先将$A的结果替换出来,然后再补一个B字母于其后,但在命令行上,真正的结果却是只会替换变量名称为AB的值出来。若使用${}就没问题了。


echo ${A}B

2.2特殊变量替换

${} 除了直接替换变量内容,还有一些用于字符串变量的特殊功能。假设我们定义了一个字符串变量为:


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

2.2.1 ${:}${::}用于字符串提取

字符串提取可以使用${:}${::}

(1)${var:n}
若n为正数,n从0开始,表示在变量var中提取第n个字符到末尾的所有字符。若n为负数,提取字符串最后面n的绝对值个字符,使用时在冒号后面加空格或一个算术表达式或整个num加上括号,如${var: -2}${var:1−3}${var:(-2)}均表示提取最后两个字符。


${file:1}:提取第1个字符及其后面的所有字符:dir1//dir2/dir3/my.file.txt
${file: -3}:提取最后3个字符,注意冒号后面添加一个空格:txt
${file:1-4}:提取最后3个字符,冒号后面不需要添加空格:txt
${file:(-3)}:提取最后3个字符,冒号后面不需要添加空格:txt

(2)${var:n1:n2}
${var:n1:n2}用于提取从下标n1开始后面n2个字符,其中下标n1与n2从0开始。


${file:0:5}:提取最左边的5个字符:/dir1
${file:5:5}:提取从第5个字符开始右边的连续5个字符:/dir2

2.2.2 ${/}${//}用于字符串模式匹配替换

${var/pattern/pattern}表示将var字符串的第一个匹配的pattern替换为另一个pattern。不改变原变量。


${file/dir/path}:将第一个dir替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir替换为path:/path1/path2/path3/my.file.txt

2.2.3${#}${##}${%}${%%}用于字符串模式匹配截断

可以过TIRDkyRzG滤掉符合指定规则的字符串,不改变原变量。


${file#*/}:拿掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一个 / 及其左边的字符串:mTIRDkyRzGy.file.txt
${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt
${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
${file%/*}:拿掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一个 / 及其右边的字符串:(空值)
${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:

#是去掉左边(在鉴盘上#在$之左边)
%是去掉右边(在鉴盘上%在$之右边)
一个符号是最小匹配,两个符号是最大匹配。

关于变量替换符${}其它的特殊用法,这里不详细展开,具体可以参考Shell特殊字符。

以上就是区分shell中的 反引号、$()和${}的详细内容,更多关于shell中的 反引号、$()和${}的资料请关注我们其它相关文章!

--结束END--

本文标题: 区分shell中的 反引号、$()和${}

本文链接: https://www.lsjlt.com/news/21200.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 区分shell中的 反引号、$()和${}
    1.反引号与$()用于命令替换 反引号和$()的作用相同,用于命令替换(command substitution),即完成引用的命令的执行,将其结果替换出来,与变量替换差不多。比如: echo `date '--d...
    99+
    2022-06-04
    shell 反引号 shell $() shell ${}
  • linux shell中单引号、双引号、反引号、反斜杠的区别
    1. 单引号 ( '' ) # grep Susan phonebook Susan Goldberg 403-212-4921 Susan Topple 212-234-2343 如果我们想查找的是Sus...
    99+
    2022-06-04
    斜杠 引号 区别
  • shell中的 反引号、$()和${}有什么区别
    这篇文章主要介绍shell中的 反引号、$()和${}有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.反引号与$()用于命令替换反引号和$()的作用相同,用于命令替换(command substituti...
    99+
    2023-06-09
  • linux shell中单引号、双引号、反引号、反斜杠的区别是什么
    本篇内容主要讲解“linux shell中单引号、双引号、反引号、反斜杠的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux shell中单引号、双引号、反引号、反斜杠的区别是什...
    99+
    2023-06-09
  • Mysql中反引号和单引号的区别
    这篇文章给大家分享的是Mysql中反引号和单引号的区别。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。反引号,一般在ESC键的下方。它是为了区分MYSQL的保留字与普通字符而引入的符号。...
    99+
    2022-10-18
  • Shell中双引号和单引号有什么区别
    Shell中双引号和单引号有什么区别?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.示例Shell在使用的过程中,经常会使双引号或者单引号将字符串括起来,也可...
    99+
    2023-06-09
  • Shell脚本中单引号(‘)和双引号(“)的使用区别
    在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用”$param”这种带双引号的格式,但也有出现使用'$param'这种带引号的使用的场景,首先大家...
    99+
    2022-06-04
    脚本 区别 单引号
  • MySQL中的引号和反引号的区别与用法详解
    前言 因此我写下了这个博客,本博客也引荐了一些大佬文章的知识,如有侵权联系我哦!如果有缘人能看到这个博客希望能对你有帮助,如果一些地方有错误也可以直接指出来哦!! 1.单引号: 我...
    99+
    2022-11-12
  • Shell脚本中单引号(‘)和双引号(“)有哪些使用区别
    本篇内容介绍了“Shell脚本中单引号(‘)和双引号(“)有哪些使用区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Linux操作系统上...
    99+
    2023-06-09
  • Shell脚本字符串单引号和双引号的区别浅析
    一、字符串基础知识 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。 单引号 st...
    99+
    2022-06-04
    字符串 脚本 区别
  • Linux命令之shell单引号和双引号的示例分析
    这篇文章将为大家详细讲解有关Linux命令之shell单引号和双引号的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。01 经典解释单引号:所见即所得双引号:所见非所得,它会先把变量解析之后,再输出...
    99+
    2023-06-09
  • PHP中的单引号和双引号的区别
    PHP中单引号和双引号简介PHP中字符串和变量插值时单引号和双引号的区别PHP中转义撇号时单引号和双引号的区别 本文将介绍PHP中单引号和双引号的区别。 PHP中单引号和双引号简介 在 PHP 中,我们使用引号来指定值是字符串文字。有两种不...
    99+
    2023-09-29
    php servlet 开发语言
  • Shell脚本字符串单引号和双引号有哪些区别
    本篇内容介绍了“Shell脚本字符串单引号和双引号有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、字符串基础知识字符串是shel...
    99+
    2023-06-09
  • Linux Shell中三种引号的用法及区别
    Linux Shell中有三种引号,分别为双引号(" ")、单引号(' ')以及反引号(` `)。 其中双引号对字符串中出现的$、''、`和进行替换;单引号不进行替换,将字符串中所有字符作为普通字符输出,而...
    99+
    2022-06-04
    引号 三种 区别
  • Bash脚本中括号和反引号的使用
    目录示例讨论总结在 Bash 脚本中,我们经常需要引用变量或者命令的执行结果来作为文件的名字或者日志的输出,在脚本或者 Shell 中我们可以使用反引号 或者括号 () 来获取到变量的内容 示例 示例 1 获取日期的输...
    99+
    2022-06-04
    Bash 括号和反引号 Bash 括号 Bash 反引号
  • PHP中单引号和双引号的区别详解
    目录PHP中单引号和双引号简介PHP中字符串和变量插值时单引号和双引号的区别PHP中转义撇号时单引号和双引号的区别补充知识:字符串内部如果出现PHP引号怎么办--关于转义.总结本文将...
    99+
    2023-01-15
    php单引号和双引号区别在哪 php单双引号的区别 php中双引号和单引号
  • linux中单引号和双引号的区别有哪些
    这篇文章给大家分享的是有关linux中单引号和双引号的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。区别:单引号属于强引用,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原封不动的使用;而双...
    99+
    2023-06-25
  • javascript中的单引号和双引号有什么区别
    本篇内容介绍了“javascript中的单引号和双引号有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2022-10-19
  • 在 PHP 中单引号(‘ ‘)和双引号(“ “)用法的区别
    在 PHP 中,使用单引号(' ')和双引号(" ")可以创建字符串。这两种引号的用法有一些区别。 单引号: 单引号用于创建简单的字符串,其中的变量和转义字符将不会被解析。单引号中的任何内容都被视为普通文本,不会进行任何特殊处理。使用单...
    99+
    2023-09-02
    php
  • bash中反引号和$()如何使用
    这篇文章主要介绍了bash中反引号和$()如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇bash中反引号和$()如何使用文章都会有所收获,下面我们一起来看看吧。在bash中,与(反引号)都是用来作命令替...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作