Bash echo中的重定向运算符不带左值?

Bash echo中的重定向运算符不带左值?,bash,shell,nginx,Bash,Shell,Nginx,我在Nginxconfigurescript中发现了以下代码: echo > $NGX_AUTO_HEADERS_H echo > $NGX_AUTOCONF_ERR 我认为这与doVAR=相同,它将简单地为空值设置变量,但当我这样做时,我得到了错误: echo > $VAR -bash: $VAR: ambiguous redirect 初始化时,它也不会将变量设置为空值: VAR=10 echo > $VAR echo "$VAR" 10 那么,

我在Nginx
configure
script中发现了以下代码:

    echo > $NGX_AUTO_HEADERS_H
    echo > $NGX_AUTOCONF_ERR
我认为这与do
VAR=
相同,它将简单地为空值设置变量,但当我这样做时,我得到了错误:

echo > $VAR
-bash: $VAR: ambiguous redirect
初始化时,它也不会将变量设置为空值:

VAR=10
echo > $VAR
echo "$VAR"
10

那么,为什么要发表这些声明,它们的目的是什么呢?

感谢所有的建议!上面的语法(当然)将创建或清空变量指向的文件。

它应该在变量指定的文件中写入一个换行符。很难说
echo>$foo
将向文件写入一个换行符,该文件的名称来自扩展
$foo
产生的第一个单词。如果该文件存在,它(有效地)截断该文件(尽管
printf>…
会更好,因为它甚至不会写换行)。
echo>$VAR
不初始化变量,而是初始化该变量指定的文件。如果变量没有定义,它就无法确定应该初始化哪个文件,因此会出现“不明确重定向”错误。