在bash脚本中运行nohup时出错

在bash脚本中运行nohup时出错,bash,shell,sass,nohup,Bash,Shell,Sass,Nohup,我的bash/nohup经验非常有限,所以我可能犯了一个基本的错误 我正在启动一个后台文件监视器。(如果有必要,Sass是一个CSS预处理器,可以监视源文件,并在检测到更改时自动将其编译为CSS。) 当我在shell提示符下输入此命令时,它会完美地启动Sass文件监视器: nohup sass --watch /data/sass/:/data/css/ > /var/log/sass.out 2> /var/log/sass.err & 但当我将其放入这样的脚本(用于调试

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

我正在启动一个后台文件监视器。(如果有必要,Sass是一个CSS预处理器,可以监视源文件,并在检测到更改时自动将其编译为CSS。)

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

nohup sass --watch /data/sass/:/data/css/ > /var/log/sass.out 2> /var/log/sass.err &
但当我将其放入这样的脚本(用于调试的简化示例脚本)中时:

我得到这个错误:

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,也会发生同样的情况。知道我哪里出错了吗?

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

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

echo `eval $COMMAND`

这对重定向有效,但如果任何参数包含空格则无效。你是什么意思?这对我很有用:
cmd=“echo”嗨,这里是空格“>/tmp/test\u eval”;eval$cmd;cat/tmp/test_eval
=>嗨,这里是spacesAwesome。现在它完全按照预期工作。谢谢你的快速回复。
echo `$COMMAND`
echo `eval $COMMAND`