gpt4 book ai didi

bash - 在 shell 脚本中使用 $() 代替反引号有什么好处?

转载 作者:行者123 更新时间:2023-12-03 04:22:20 25 4
gpt4 key购买 nike

有两种方法可以捕获 bash 中命令行的输出:

  1. 旧版 Bourne shell 反引号 `` :

    var=`command`
  2. $()语法(据我所知,这是 Bash 特定的,或者至少不受像原始 Bourne 这样的非 POSIX 旧 shell 支持)

    var=$(command)

与反引号相比,使用第二种语法有什么好处吗?或者两者完全 100% 等效吗?

最佳答案

主要的一点是能够将它们嵌套起来,即命令中的命令,而不会失去理智试图弄清楚某种形式的转义是否适用于反引号。

一个例子,虽然有些做作:

deps=$(find /dir -name $(ls -1tr 201112[0-9][0-9]*.txt | tail -1l) -print)

这将为您提供 /dir 目录树中所有文件的列表,这些文件与 2011 年 12 月以来最早的日期文本文件同名(a)

另一个例子是获取父目录的名称(而不是完整路径):

pax> cd /home/pax/xyzzy/plugh
pax> parent=$(basename $(dirname $PWD))
pax> echo $parent
xyzzy
<小时/>

(a) 既然特定命令可能实际上不起作用,我还没有测试该功能。因此,如果您对我投反对票,那么您就失去了意图:-) 这只是作为如何嵌套的说明,而不是作为无错误的生产就绪代码片段。

关于bash - 在 shell 脚本中使用 $() 代替反引号有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com