使用>&创建文件的脚本失败w /文件未在下一行找到

时间:2014-10-05 02:59:47

标签: bash

我正在运行bash脚本并遇到错误。我不明白为什么会这样。

#!/bin/bash
./autogen.sh >& $LIB-autogen
mv $LIB-autogen $DATA_DIR/$LIB/

它报告了一条错误消息:

mv: cannot stat `ex-autogen': No such file or directory

autogen.sh是一个生成配置文件的脚本,该脚本运行良好。

如果您需要更多信息,请与我们联系。

感谢。

2 个答案:

答案 0 :(得分:1)

加上引号

mv "$LIB-autogen" "$DATA_DIR/$LIB"

来自Charles Duffy:

  

不知道DATA_DIR,LIB和IFS的确切值(一个   内部shell设置),一个不能判断是否没有操作   双引号是否安全。使用双引号操作   对比,总是安全的,因为字符串分裂和glob   扩张不可能发生。那么,这个答案通常是合理的建议,   因为它排除了可能出现的问题   发生。

答案 1 :(得分:0)

>&是另一种编写&>的方法,它本身就是一个相当新的重定向运算符 - 人们可以设想运行一个没有它的bash版本。

./autogen.sh >"$LIB-autogen" 2>&1

...将autogen.sh的stdout和stderr发送到相应命名的文件的方式更兼容。