Bash脚本中的下面一行

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

给我这个错误:

 line 46: ${OUPUT_RESULTS}: ambiguous redirect

Why?


当前回答

我最近发现重定向文件名称中的空格会导致“模糊重定向”消息。

例如,如果重定向到应用程序$(date +%Y%m%d%k% m% S).log,并且指定了错误的格式化字符,则重定向将在上午10点之前失败。但是,如果您使用应用程序$(date +%Y%m%d%H% m% S).log则会成功。这是因为%k格式为9AM生成' 9',而%H格式为9AM生成'09'。

echo $(date +%Y%m%d%k% m% S)返回20140626 95138

echo $(date +%Y%m%d%H% m% S)返回20140626095138

错误的日期可能会给出如下内容:

echo "a" > myapp20140626 95138.log

以下是所期望的:

echo "a" > myapp20140626095138.log

其他回答

你有一个名为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$ 

在${OUPUT_RESULTS}中指定的路径是否包含任何空白字符?如果是这样,你可能要考虑使用……>> "${OUPUT_RESULTS}"(使用引号)。

(你也可以考虑将你的变量重命名为${OUTPUT_RESULTS})

如果在shell命令中使用变量名,则必须将其与+号连接。

例如:

如果您有两个文件,并且您不打算硬编码文件名,而是希望使用变量名 "input.txt" = x "output.txt" = y

然后('shell command within quotes' + x > + y)

它将以这种方式工作,特别是如果你在os的python程序中使用它。系统命令可能

我刚刚在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