Bash脚本中的下面一行

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

给我这个错误:

 line 46: ${OUPUT_RESULTS}: ambiguous redirect

Why?


当前回答

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

其他回答

这也可能是事实。

您没有在变量中指定文件并将输出重定向到该文件,那么bash将抛出此错误。

files=`ls`
out_file = /path/to/output_file.t
for i in `echo "$files"`;
do
    content=`cat $i` 
    echo "${content}  ${i}" >> ${out_file}
done

Out_file变量没有正确设置,所以也要注意这一点。 顺便说一下,这段代码将打印控制台上的所有内容及其文件名。

Bash有时很迟钝。

对于基本相同的错误,下面的命令都会返回不同的错误消息:

$ echo hello >
bash: syntax error near unexpected token `newline`

$ echo hello > ${NONEXISTENT}
bash: ${NONEXISTENT}: ambiguous redirect

$ echo hello > "${NONEXISTENT}"
bash: : No such file or directory

在变量周围添加引号似乎是处理“模糊重定向”消息的好方法:当您犯了键入错误时,往往会得到更好的消息——当错误是由文件名中的空格引起时,使用引号是解决办法。

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

例如: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

另一个可能导致“模糊重定向”的东西是你所写的变量名中的\t \n \r

也许不是\n\r?但宁可慎之又慎

试试这个

echo "a" > ${output_name//[$'\t\n\r']}

我在解析HTML时遇到了这个问题,tab \t在行首。

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