为什么输入重定向在命令替换时的工作方式不同?

考虑以下情况:为什么输入重定向在命令替换时的工作方式不同?

$ echo "abc" > file 

$ var=$(< file)

$ echo "$var"

abc

里面的命令替换,我们使用重定向和一个文件,并且该文件的内容被正确地由可变捕获。

然而,所有以下实施例中没有产生输出:

$ < file 

$ < file | cat

$ <file> file2

$ cat file2

在所有这些情况下,命令的内容不重定向到输出。

那么,为什么当重定向放置在命令替换内部时会有区别?在命令替换块内部和外部,重定向有不同的功能吗?

回答:

$(< file)不是重定向;它只是一个命令替换的特例,它使用与输入重定向相同的语法。

通常,输入重定向必须与命令关联。还有就是可以说是可以考虑的例外一种情况下,这是

$ > file 

这不是技术上重定向,因为没有被重定向文件,但file仍然写模式,这截断开它到0字节。

以上是 为什么输入重定向在命令替换时的工作方式不同? 的全部内容, 来源链接: utcz.com/qa/257289.html

回到顶部