-2

考虑以下情况:

$ echo "abc" > file
$ var=$(< file)
$ echo "$var"
abc

在命令替换中,我们使用了重定向和文件,并且文件的内容被变量正确捕获。

但是,以下所有示例均不产生输出:

$ < file
$ < file | cat
$ < file > file2
$ cat file2

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

那么,为什么将重定向放在命令替换中时会有所不同呢?在命令替换块内部和外部时,重定向是否具有不同的功能?

4

1 回答 1

1

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

通常,输入重定向必须与命令相关联。有一种情况可以说可以被视为例外,即

$ > file

从技术上讲,这不是重定向,因为没有任何内容被重定向文件,但file仍以写入模式打开,这会将其截断为 0 字节。

于 2016-10-22T17:53:27.283 回答