정렬 모드에서 쉘 스크립트를 실행하시겠습니까?

정렬 모드에서 쉘 스크립트를 실행하시겠습니까?

4개의 쉘 스크립트가 있는데 순서대로 실행하고 싶습니다.

스크립트1 -> 스크립트2 -> 스크립트3 -> 스크립트4

내 로컬 컴퓨터에서는 스크립트를 실행 가능하게 만들고 다음과 같은 새 셸 스크립트를 생성하여 이를 보장할 수 있습니다.

#!/bin/bash
. script1.sh
. script2.sh
. script3.sh
. script4.sh

스크립트 중 하나가 원격 시스템(예: script2.sh)에 있는 경우 어떻게 해야 합니까?

  1. 원격으로 쉘 스크립트 실행
  2. 정렬되었는지 확인하세요.

참고: 모든 스크립트에는 무한 루프가 있습니다.

답변1

나는 당신이 다음을 사용하여 스크립트를 실행할 수 있다고 가정합니다. ( ./script1.sh쉘에서 스크립트 시작) 대신 . script1.sh(이것은원천현재 쉘에 있습니까)?

만일이 경우라면:

#!/bin/bash

./script1.sh   &&
{ ssh user@remote "cd /path/to/  && script2.sh" ; }  &&
./script3.sh   &&
./script4.sh

&&이전 명령어가 "0"(= "ok")을 반환하는 경우에만 다음 명령어가 실행되는지 확인하세요. 따라서 스크립트가 일반적인 상황에서는 올바른 "0"을 반환하고 다른 것(예: 작은 양의 정수)을 반환하는지 확인하세요. "1") ") 그렇지 않은 경우).

( &&여기에서 했던 것처럼 한 줄의 끝에 추가한 다음 \중간에 개행 문자를 추가하지 않고 다음 줄에 다음을 추가할 수 있습니다. 줄 끝의 "&&"는 bash에게 해당 줄이 다음 줄에서 계속할 수 있습니다. [수정해 주신 @Dennis에게 감사드립니다. "&&"가 다음 줄에 있을 때 "\newline"을 넣지 않는 것도 효과가 있다고 생각했는데, 이는 더 읽기 쉽습니다... 하지만 원한다면 그렇지 않습니다. 다음 줄에 "&&"를 사용하세요. 개행 앞에 백슬래시가 필요합니다.])

답변2

원격 컴퓨터에 연결할 수 ssh있고 스크립트가 이미 test원격 컴퓨터에 있는 계정의 하위 디렉터리에 있는 경우 다음을 수행할 수 있습니다.

#!/bin/bash
. script1.sh
ssh your_name@remote_machine "cd test; . script2.sh"
. script3.sh
. script4.sh

스크립트는 원격 명령이 반환될 때까지 기다립니다.script3.sh

스크립트가 아직 존재하지 않거나 정기적으로 변경되는 경우 scp먼저 알려진 위치에 복사할 수 있습니다(이미 한 번 생성했다고 가정 test).

#!/bin/bash
. script1.sh
scp script2.sh your_name@remote_machine:~/test/
ssh your_name@remote_machine "cd test; . script2.sh"
. script3.sh
. script4.sh

script2.sh파일에 일부 출력을 생성한 경우 ssh작업이 완료되면 물론 다시 복사할 수 있습니다.

관련 정보