小编Sta*_* Yu的帖子

了解 Bash 的 Read-a-File 命令替换

我试图了解 Bash 是如何处理以下行的:

$(< "$FILE")
Run Code Online (Sandbox Code Playgroud)

根据 Bash 手册页,这相当于:

$(cat "$FILE")
Run Code Online (Sandbox Code Playgroud)

我可以按照第二行的推理思路。Bash 对 执行变量扩展$FILE,进入命令替换,传递$FILEto的值cat,cat 将内容$FILE输出到标准输出,命令替换通过用内部命令产生的标准输出替换整行来完成,Bash 尝试执行它一个简单的命令。

但是,对于我上面提到的第一行,我理解为:Bash 在 上执行变量替换$FILE,Bash 打开$FILE以读取标准输入,以某种方式将标准输入复制到标准输出,命令替换完成,并且 Bash 尝试执行生成的标准输出。

有人可以向我解释如何$FILE从标准输入到标准输出的内容吗?

shell bash io-redirection command-substitution

14
推荐指数
3
解决办法
9947
查看次数

`[...] &amp; wait $!` 的意义

bash 模式的意义是什么[...] & wait $!?例如:

curl -LsS $AZP_AGENT_PACKAGE_LATEST_URL | tar -xz & wait $!
Run Code Online (Sandbox Code Playgroud)

我将其理解为:

  1. 指示&bash 在后台子 shell 中运行先前的管道。
  2. 然后wait $!等待管道完成后再返回。

但如果是这样的话,它与仅仅运行管道本身有什么不同呢?重点是什么?

包含此示例(以及其他一些实例)的脚本可以在以下位置找到:

https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops

bash shell-script

14
推荐指数
1
解决办法
3128
查看次数

bash 如何对待“&gt; &gt;()”

在尝试输出重定向和进程替换时,我偶然发现了以下命令及其结果输出:

    me@elem:~$ echo foo > >(cat); 回声条
    酒吧
    我@elem:~$ foo

(是的,最后那个空的换行符是故意的。)

所以 bash echo 的栏,打印我通常的提示,echo 的 foo,echo 是一个换行符,并将我的光标留在那里。如果我再次按回车键,它会在新行上打印我的提示并将光标留在后面(当有人在空命令行上按回车键时,正如预期的那样)。

我期待它将 foo 写入文件描述符,cat 读取它和 echo 的 foo,第二个 echo echo 的 bar,然后返回到命令提示符。但显然情况并非如此。

有人可以解释一下发生了什么吗?

shell bash concurrency process-substitution

9
推荐指数
1
解决办法
614
查看次数