考虑以下情况:
$ echo "abc" > file
$ var=$(< file)
$ echo "$var"
abc
在命令替换中,我们使用重定向和文件,并且变量正确捕获文件的内容。
但是,以下所有示例都不会产生输出:
$ < file
$ < file | cat
$ < file > file2
$ cat file2
在所有这些情况下,命令的内容不会重定向到输出。
那么为什么重定向被置于命令替换之内会有什么不同呢?当内部与命令替换块之外时,重定向是否具有不同的功能?
答案 0 :(得分:1)
$(< file)
不是重定向;它只是命令替换的一种特殊情况,它使用与输入重定向相同的语法。
通常,输入重定向必须与命令相关联。有一种情况可以说是一种例外,即
$ > file
从技术上讲,它不是重定向,因为没有任何内容重定向到文件,但file
在写入模式下仍然打开,这会截断它为0字节。