我正在运行一个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
发送到适当命名文件的更兼容的方式。