`$(< file)` 完全是 bash,还是 `$(< file)` 真的依赖于 `cat` ?

`$(< file)` 完全是 bash,还是 `$(< file)` 真的依赖于 `cat` ?

来自 Bash 手册:

命令替换 $(cat file)可以替换为等效但更快的命令$(< file)

cat来自 coreutils,而不是 bash 内置命令。所以我很惊讶 bash 手册会提到 bash 之外的东西,比如cat.

真的是$(< file)的简写吗$(cat file)

$(< file)完全bash,还是$(< file)真的依赖于cat

如果$(< file)完全是bash,并且不依赖于cat

  • < file重定向还是命令或两者(带有重定向和空命令名称的命令)?
  • < file(带有重定向和空命令名的命令)如何输出到标准输出?

谢谢。

答案1

更新:参见https://unix.stackexchange.com/a/368663/145784详细讨论$(<不同 shell 中的 unix 运算符,例如 。

$(< file)完全是bash。该语句< file获取该文件,并将其重定向到stdin调用它的命令。在本例中,$()是命令替换的一种形式,因此它被用作命令的替换。它获取接收到的输入,并将其转换为适合在命令中使用的变量。由于它不调用外部程序cat,因此速度更快。

要将此变量输出到标准输出,您只需运行:

echo $(< file)

相关内容