良许Linux教程网 干货合集 Bash 中的 ${} 和 $() 有什么区别

Bash 中的 ${} 和 $() 有什么区别

基于GNU的操作系统,如Linux,依赖于一个名为Bash的命令语言解释器或Shell来完成它们的大部分计算任务和目标。

Bash是Bourne Again Shell的缩写,这是一个双关语,用来向Bourne Shell(由Steven Bourne发明)致敬。在兼容性方面,Bash与sh非常匹配。C shell (csh)和Korn shell (ksh)中的一些有用特性也被包含在这个shell语言解释器中。

在实现方面,Bash旨在符合IEEE POSIX规范(IEEE标准1003.1)的工具部分和IEEE POSIX Shell。因此,作为一种交互式和编程工具,Bash提供的功能改进超过了sh中的改进。

Linux和其他基于GNU的操作系统的用户并不需要仅仅依赖Bash作为他们的主要命令语言解释器,因为像csh这样的shell版本也预先打包在这些系统中。但由于其独特的shell属性(如可移植性),Bash仅被配置为默认的Linux shell。

在 Bash 中比较 $() 与 ${}

为了比较与 Bash 环境相关的这两个属性,我们必须重申$()to$(command)${}to ${parameter}。因此,我们可以尝试定义这两个 Bash 实体。

理解 $(命令)

$(command)Bash中涉及命令替换。更具体地说,命令部分 in$(command)被执行,其输出被捕获并打印在标准输出上。

背后的语法$(command)是令牌级别的。考虑执行以下命令,该命令旨在在终端上打印出当前日期。

echo "今天是 $(date). LinuxMi.com 又是美好的一天。"

image-20230703222247196
image-20230703222247196

在 Linux 中打印日期

上述执行可以用以下方式解释。首先,执行 date 命令并将其输出作为参数包含在 echo 命令中。

在这里,我们可以假设命令替换在重新包含在主 shell 之前在单独的子 shell 中执行。

了解 ${parameter}

${parameter}Bash中涉及参数替换。根据 Bash 手册页,参数是一个值存储实体。参数实体可以与名称、数字或特殊字符相关联。

大括号{}暗示我们在处理位置参数,或者在使用的参数(参数值)后面是一个与参数名称不相关的非解释性字符,例如${animal}s

至于位置参数,可以用一个或多个数字来表示(单个数字 0 除外)。因此,如果我们有一个名为$variable_name 的变量,则可以使用参数 替换${parameter}来检索关联的变量值。

考虑以下变量声明命令:

$ animal=lion

让我们调用 animal 变量以尝试将变量值复数:

echo $animals

image-20230703222237417
image-20230703222237417

在命令中声明变量

在标准输出中不会打印任何内容,因为 Bash 不理解变量 $animals。但是,我们可以通过如下方式使用参数替换方法成功调用我们的$animals 变量:

echo ${animal}s

image-20230703222234416
image-20230703222234416

在命令中调用变量

在某些情况下,感叹号可能会在参数替换实现的第一个左大括号之后出现。在这种情况下,就会出现变量间接的概念。

变量值优先于参数值,如下所示:

$ animal=lion 
$ echo $animal
$ lion=rafiki
$ echo $lionecho ${!animal}


参数值的优先级

希望本文能够说明 Bash 中$()${}之间的区别。

如果还有什么疑问与建议,请在下面的评论框里给我们留言。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部