2012-10-26 4 views
1

bash/nohup 환경이 매우 제한되어있어 기본적인 실수를 저지르고있을 수 있습니다.bash 스크립트에서 nohup을 실행할 때 오류가 발생했습니다.

배경 파일 모니터를 시작합니다. Sass는 원본 파일을 모니터링하고 변경 사항을 감지하면 자동으로 CSS로 컴파일 할 수있는 CSS 전처리 기입니다.

쉘 프롬프트에서이 내용을 입력하면 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. 
012 :

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

을 나는이 오류

전체 경로/usr/bin/local/sass를 지정하면 똑같은 일이 발생합니다. 내가 잘못 가고있는 어떤 생각?

답변

2

당신은을 통해 복잡한 명령을 (예를 들어, 리디렉션) 실행할 수 없습니다 : 간단한 이진 또는 스크립트를 실행하는 경우

echo `$COMMAND` 

당신은 정말 이렇게 만 할 수 있습니다. 귀하의 $COMMAND 요구는 실행하기 전에 제대로 확장, 그래서 당신은 실행해야합니다 :

echo `eval $COMMAND` 
+0

이 리디렉션 작동하지만 인수에 공백이 – jordanm

+0

이 포함 된 경우 작동하지 않습니다 당신은 무엇을 의미합니까? 이것은 나를 위해 작동합니다 :'cmd = "echo 'hi, 여기에 공백이 있습니다>>/tmp/test_eval"; eval $ cmd; cat/tmp/test_eval' => 안녕하세요, 여기에 공백이 있습니다 – ndbroadbent

+0

굉장합니다. 이제 의도 한대로 정확하게 작동합니다. 빠른 답변 감사합니다. –

관련 문제