我的Bash脚本中的以下行
echo $AAAA" "$DDDD" "$MOL_TAG >> ${OUPUT_RESULTS}
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
line 46: ${OUPUT_RESULTS}: ambiguous redirect
Run Code Online (Sandbox Code Playgroud)
为什么?
nob*_*bar 250
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
Run Code Online (Sandbox Code Playgroud)
在变量周围添加引号似乎是处理"模糊重定向"消息的好方法:当您输入错误时,您倾向于获得更好的消息 - 并且当错误是由文件名中的空格引起时,使用引号是修复.
JUS*_*ION 22
你有一个名字变量,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$
Run Code Online (Sandbox Code Playgroud)
gho*_*g74 14
在变量周围加上引号.如果碰巧有空格,它也会给你"模糊的重定向".还检查你的拼写
echo $AAAA" "$DDDD" "$MOL_TAG >> "${OUPUT_RESULTS}"
Run Code Online (Sandbox Code Playgroud)
例如模棱两可的重定向
$ 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
Run Code Online (Sandbox Code Playgroud)
$ {OUPUT_RESULTS}中指定的路径是否包含任何空格字符?如果是这样,您可能需要考虑使用... >> "${OUPUT_RESULTS}"(使用引号).
(您可能还想考虑将变量重命名为${OUTPUT_RESULTS})
我最近发现重定向文件名称中的空格会导致"模糊重定向"消息.
例如,如果您重定向到application$(date +%Y%m%d%k%M%S).log并指定了错误的格式化字符,则重定向将在上午10点之前失败.但是,如果你使用application$(date +%Y%m%d%H%M%S).log它会成功.这是因为9AM 的%k格式产生' 9'了9AM的%H收益率'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
Run Code Online (Sandbox Code Playgroud)
以下是您想要的:
echo "a" > myapp20140626095138.log
Run Code Online (Sandbox Code Playgroud)