백그라운드에서 노드 앱을 실행하고 컬링하는 동안 &&를 사용하고 싶습니다. 따라해봤는데 안되네요
node app.js &;curl localhost
나는 다른 것을 시도했다
node app.js & && curl localhost
하지만 둘 다 작동하지 않습니다
답변1
당신은 원할 수도 있습니다
echo first && echo second && echo third & wait
이것은 당신에게 출력을 제공합니다 (유사)
[1] 4242
first
second
third
[1]+ Done
마지막 명령은 &
전체 이전 명령을 파이프라인/작업에 넣습니다. 작업은 쉘 부울 표현식을 사용하여 함께 연결된 세 가지 명령으로 구성됩니다. 그 중 하나가 false를 반환하면 체인이 종료되어야 합니다. 하지만 모두 백그라운드에서 실행됩니다.
첫 번째 프로그램은 백그라운드에서 실행하고 두 번째 프로그램은 포그라운드에서 실행할 때의 문제점은 두 번째 명령이 첫 번째 명령이 성공적으로 완료되었는지 알 수 없다는 것입니다. 프로그램을 백그라운드에 놓으면 상태가 0이 됩니다.~하지 않는 한프로그램을 실행할 수 없습니다. 따라서 아래 코드는 실제로확실히합리적인:
( start_webservice & ) && curl localhost
이것도 말이 안 됩니다:
start_webservice & test "$?" = 0 && curl localhost
그냥 백그라운드 서비스를 시작하고 무조건 테스트해보세요. 테스트하기 전에 잠시 기다려야 할 가능성이 높습니다.
start_webservice &
success=0
tries=5
pause=1
while [ $success = 0 -a $tries -gt 0 ]; do
sleep $pause
let tries=tries-1
curl localhost && success=1
done
if [ $success = 0 ]; then
echo "Launch failed"
fi
답변2
올바른 키워드는 &
.not 필수 입니다 ;
.
예:first_script.sh & second_script.sh
귀하의 경우:
node app.js & curl localhost
답변3
괄호를 사용하여 명령을 그룹화한 후 다음을 사용하십시오 &
.
통사론:
( command1 && command2 )&
예:
( find $HOME > ~/find.log && date >> find.log )&