来自 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)