Bash脚本中的下面一行
echo $AAAA" "$DDDD" "$MOL_TAG >> ${OUPUT_RESULTS}
给我这个错误:
line 46: ${OUPUT_RESULTS}: ambiguous redirect
Why?
Bash脚本中的下面一行
echo $AAAA" "$DDDD" "$MOL_TAG >> ${OUPUT_RESULTS}
给我这个错误:
line 46: ${OUPUT_RESULTS}: ambiguous redirect
Why?
当前回答
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
在变量周围添加引号似乎是处理“模糊重定向”消息的好方法:当您犯了键入错误时,往往会得到更好的消息——当错误是由文件名中的空格引起时,使用引号是解决办法。
其他回答
在${OUPUT_RESULTS}中指定的路径是否包含任何空白字符?如果是这样,你可能要考虑使用……>> "${OUPUT_RESULTS}"(使用引号)。
(你也可以考虑将你的变量重命名为${OUTPUT_RESULTS})
我刚刚在bash脚本中出现了这个错误。问题是在前一行的末尾出现了一个意外的\错误。
在变量周围加上引号。如果它碰巧有空格,它也会给你“歧义重定向”。还要检查拼写
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将抛出此错误。
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变量没有正确设置,所以也要注意这一点。 顺便说一下,这段代码将打印控制台上的所有内容及其文件名。
另一个可能导致“模糊重定向”的东西是你所写的变量名中的\t \n \r
也许不是\n\r?但宁可慎之又慎
试试这个
echo "a" > ${output_name//[$'\t\n\r']}
我在解析HTML时遇到了这个问题,tab \t在行首。