Bash脚本中的下面一行

 echo $AAAA"     "$DDDD"         "$MOL_TAG  >>  ${OUPUT_RESULTS}

给我这个错误:

 line 46: ${OUPUT_RESULTS}: ambiguous redirect

Why?


当前回答

在变量周围加上引号。如果它碰巧有空格,它也会给你“歧义重定向”。还要检查拼写

echo $AAAA"     "$DDDD"         "$MOL_TAG  >>  "${OUPUT_RESULTS}"

歧义的,模棱两可的

$ var="file with spaces"
$ echo $AAAA"     "$DDDD"         "$MOL_TAG >> ${var}
bash: ${var}: ambiguous redirect
$ echo $AAAA"     "$DDDD"         "$MOL_TAG >> "${var}"
$ cat file\ with\ spaces
aaaa     dddd         mol_tag

其他回答

我刚刚在bash脚本中出现了这个错误。问题是在前一行的末尾出现了一个意外的\错误。

你有一个名为OUPUT_RESULTS的变量吗?还是更可能是OUTPUT_RESULTS?


michael@isolde:~/junk$ ABC=junk.txt
michael@isolde:~/junk$ echo "Booger" > $ABC
michael@isolde:~/junk$ echo "Booger" >> $ABB
bash: $ABB: ambiguous redirect
michael@isolde:~/junk$ 

在我的例子中,这是一个有用的警告,因为目标变量(不是文件)拼写错误并且不存在。

echo "ja" >> $doesNotExist

导致

./howdy.sh: line 4: $doesNotExist: ambiguous redirect

对于我的例子,如果我通过env指定输出文件(例如$ENV_OF_LOG_FILE),那么将得到错误模糊重定向。

但是,如果我使用纯文本作为文件路径(例如/path/to/log_file),那么就没有错误。

在尝试使用大括号展开将输出写入多个文件时,我得到了此错误。

例如:echo "text" > {f1,f2}.txt将导致-bash: {f1,f2}.txt:模糊重定向

在这种情况下,使用tee输出到多个文件:

echo "text" | tee {f1,f2,...,fn}.txt 1>/dev/null

1>/dev/null将阻止将文本写入标准输出

如果你想追加到文件中,使用tee -a