我遇到了这段代码:
file=$(<filename)
这从文件名中读取文件。
我的问题是这是如何工作的?
我从这篇文章中读到:
它告诉我,单括号可以用作:
- Sub bash execution
- Array construction
但在上述情况下,我不知道这是如何解释的。
除了这个问题,我想知道为什么当我这样做时echo $file
,文件内容连接成一行?
我遇到了这段代码:
file=$(<filename)
这从文件名中读取文件。
我的问题是这是如何工作的?
我从这篇文章中读到:
它告诉我,单括号可以用作:
- Sub bash execution
- Array construction
但在上述情况下,我不知道这是如何解释的。
除了这个问题,我想知道为什么当我这样做时echo $file
,文件内容连接成一行?
$(...)
执行命令替换;读取里面的命令,并将 stdout 的输出返回给脚本。
<...
是重定向;文件的内容被读取并输入到进程的标准输入中。
将两者放在一起会产生一个隐式cat
,将重定向的标准输入连接到命令替换的标准输出,将文件的内容读入脚本。
您必须将变量括在双引号中,否则它将扩展为将传递给 echo 的命令行参数。
如果将其括在双引号中,则变量将作为单个参数传递,并且 echo 将正确显示它。
echo "$file"
echo $file
会给你一个连接的输出。
尝试
echo "$file"
这将为您提供多行的输出。