返回顶部
首页 > 资讯 > 精选 >shell中的 反引号、$()和${}有什么区别
  • 207
分享到

shell中的 反引号、$()和${}有什么区别

2023-06-09 11:06:37 207人浏览 安东尼
摘要

这篇文章主要介绍shell中的 反引号、$()和${}有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.反引号与$()用于命令替换反引号和$()的作用相同,用于命令替换(command substituti

这篇文章主要介绍shell中的 反引号、$()和${}有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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`与` `两段。正确的输入应该如下:

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

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

var1=`echo \$HOME`#使用一个反斜杠无法完成对$符的转义var2=`echo \\$HOME`var3=$(echo \$HOME)echo $var1echo $var2echo $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.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 ${/}${//}用于字符串模式匹配替换

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

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

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

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

${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

记忆的方法为:

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

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

以上是“shell中的 反引号、$()和${}有什么区别”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: shell中的 反引号、$()和${}有什么区别

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

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

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

  • 微信公众号

  • 商务合作