2014-03-02 2 views
2

나는 다음을 수행 쉘 스크립트를 만들려고 노력 해요 :나중에

  • 시작 프로그램 X
  • X가, 몇 가지 명령을 실행 실행되는 동안 예 :이 사용자의 입력을 할 수 있도록 해당 명령 프로그램 x의 실행 후

    echo "blabla" >> ~/blabla.txt 
    
  • 포 그라운드에서 실행되어야한다.

지금까지 내가 가진 :

~/x & 
echo "blabla" >> ~/blabla.txt 

는 그러나, 나는 X 다시 전경으로 이동하는 방법을 모르겠어요. 이것은 쉘 스크립트에서 모두 호출되므로 포 그라운드로 이동하는 x의 작업 번호를 알지 못합니다.

참고 : 모든 것이 자동화되어야하며 사용자가 쉘 스크립트와 상호 작용하지 않아야합니다.

어떤 제안 누군가는 스크립트를해야 ​​할 수도 있습니다 이유를 전혀 이해하지 않지만

+0

같은 것, 그것은 터미널에도 불구하고에 표시한다 백그라운드에서 실행하는 x. – Amit

답변

1

전경을 마지막 백그라운드 프로세스를 가지고 fg을 사용할 수 있습니다 : 환영합니다, 나는 존재보다 확신 더 우아하고 더 나은/올바른 솔루션 -하지만 확인 - 다음 demostrating 방법 :

배경에 가고 (bgg라는 이름으로) 어떤 스크립트

,321 0

주요 스크립트 (main.sh)

set -m #this is important 

echo "Sending script bgg to background - will cycle 10 secs" 
./bgg & 2>/dev/null 

echo "Some commands" 
date 
read -r -p 'main.sh - enter something:' fgdata 
echo "Main.sh got: ==$fgdata==" 

jnum=$(jobs -l | grep " $! " | sed 's/\[\(.*\)\].*/\1/') 
echo "Backgroung job number: $jnum" 

echo "Now sleeping 3 sec" 
sleep 3 
echo "Bringing $jnum to foreground - wait until the BG job will read" 
fg $jnum 

실행 ./main.sh - 프로그램 x는 사용자 입력을 요구하는 경우 그 결과가

Sending bgg to background - will cycle 10 secs 
Some commands 
Mon Mar 3 00:04:57 CET 2014 
main.sh - enter something:bg: 1 
bg: 2 
bg: 3 
bg: 4 
bg: 5 
qqbg: 6 
qqqqq 
Main.sh got: ==qqqqqqq== 
Backgroung job number: 1 
Now sleeping 3 sec 
bg: 7 
bg: 8 
bg: 9 
Bringing 1 to foreground - wait until the BG job will read 
./bgg 
bg: 10 
BGG enter something:wwwwwww 
./bgg got: wwwwwww