쉘에 많은 명령을 보내고 명령이 완료될 때까지 기다리는 방법

쉘에 많은 명령을 보내고 명령이 완료될 때까지 기다리는 방법

20개 정도의 명령이 있는데 모두 Unix 셸로 보내고 결과를 복사해야 하는데 방법을 모르겠습니다.

모바일 네트워크 관리에 연결된 애플릿이기 때문에 어떤 쉘이 있는지 잘 모르겠습니다. 이 애플릿을 통해 라인을 통해 명령을 보내고 비명을 통해 결과를 받을 수 있으므로 스크립트를 사용하여 명령을 보낼 수 없습니다.

명령 1- 서버에 연결합니다.

명령 1이 완료될 때까지 기다립니다.

명령 2- 1번 서버의 모든 정보 업데이트 완료

기다리다.

명령 3. 몇 가지 매개변수를 가져옵니다.

...그리고 더 많은 명령이 있습니다.

시험을 마친그리고cmd1 | cmd2 | cmd3 그리고 cmd1 & cmd2 & cmd3그리고cmd1;cmd2

문제는 cmd1RNC(네트워크 요소)에 연결되는데, cmd2이해되기까지 약 15초 정도 걸린다는 점이다. 그러나 첫 번째 명령에만 해당됩니다. 이것을 실행하는 방법에 대한 단서가 있습니까?

답변1

일반적으로 cmd1;cmd2;cmd3;cmd4(한 줄에 작성하려는 경우) 또는 cmd1 && cmd2 && cmd3 && cmd4cmd2가 실패할 때 cmd3을 실행하고 싶지 않은 경우입니다.

또는 ;한 줄에 하나의 명령만 작성할 수도 있습니다.

cmd1
cmd2
cmd3
cmd4

명령을 백그라운드에서 병렬로 실행하려면 다음을 사용할 수도 있습니다.

cmd1 &
cmd2 &
cmd3 &
cmd4 &
wait # for cmd1-4 to finish

이러한 방법 중 하나를 쉘 스크립트에 넣을 수 있습니다. 쉘 스크립트에 작성하는 내용은 실제 쉘 자체에 작성하는 내용과 거의 구별할 수 없습니다.

답변2

sleep환경이 허용하는 경우 이에 대해 조사해 볼 수도 있습니다. 전체 순서는 다음과 같습니다 cmd1 && sleep 10s && cmd2.
이것은 관련이 있습니다수면을 위한 매뉴얼 페이지.

답변3

다음과 같이 순차적으로 실행되는 명령이 포함된 파일인 스크립트를 사용하세요.

#!/bin/sh

command-01
command-02
...
command-20

첫 번째 줄(shebang)은 다음 명령( )을 실행하여 /bin/sh파일을 실행 가능하게 만들고 chmod u+x your-little-script를 통해 실행할 수 있음을 나타냅니다 ./my-little-script. 이렇게 하면 한 단계도 놓치지 않습니다 ;-)

완전한 프로그래밍 언어를 제공하는 셸 설명서를 읽어보세요. bash(1)이것이 사용 가능한지 확인하고 , 그렇지 않으면 Korn shell 을 확인하십시오 ksh(1). 이는 스크립트에서(또는 대화식으로) 제어 흐름을 제어하는 ​​데 유용한 많은 기능을 제공합니다.

답변4

expect로컬 컴퓨터에서 비슷한 명령을 실행하여 전송 cmd1하기 전에 전송이 완료될 때까지 기다릴 수 있습니다 cmd2. 올바른 명령 기대 스크립트를 작성하려면 합리적인 대기 시간 또는 명령이 완료되었음을 나타내는 특정 출력을 계산해야 합니다.

물론, cmd1; cmd2; cmd3; cmd4명령 내에서는 명령이 순차적으로 실행됩니다.

관련 정보