脚本创建文件,>和失败,下一行找不到文件



我正在运行一个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 是一个用于生成配置文件的脚本,该脚本运行良好。

如果您需要更多信息,请告诉我。

谢谢。

把引号

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

来自查尔斯·达菲:

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

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

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

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

最新更新