1

我的 bash/nohup 经验非常有限,所以我可能犯了一个基本错误。

我正在启动一个后台文件监视器。(如果重要的话,Sass 是一个 CSS 预处理器,它可以监控源文件并在检测到更改时自动将它们编译成 CSS。)

当我在 shell 提示符下输入它时,它会完美地启动 Sass 文件监视器:

nohup sass --watch /data/sass/:/data/css/ > /var/log/sass.out 2> /var/log/sass.err &

但是当我把它放在这样的脚本中时(用于调试的简化示例脚本):

COMMAND="[exactly the same command as above]"
echo `$COMMAND`

我收到此错误:

nohup: ignoring input and redirecting stderr to stdout
Errno::ENOENT: No such file or directory - > Use --trace for backtrace. >>> 
Sass is watching for changes. Press Ctrl-C to stop.

如果我指定完整路径 /usr/bin/local/sass,也会发生同样的事情。知道我哪里出错了吗?

4

1 回答 1

2

您不能通过以下方式运行复杂的命令(例如使用重定向):

echo `$COMMAND`

只有在运行简单的二进制文件或脚本时才能真正做到这一点。您$COMMAND需要在执行之前正确扩展,因此您需要运行:

echo `eval $COMMAND`
于 2012-10-26T19:27:46.400 回答