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