반복적인 스크립트 실행: A가 B를 호출하고 B가 A를 호출합니다.

반복적인 스크립트 실행: A가 B를 호출하고 B가 A를 호출합니다.

scriptA.sh변수가 특정 값을 가정하면 scriptB.sh무언가를 수행한 다음 a를 호출하는 scriptA.sh다른 스크립트를 실행해야 하는 스크립트가 있습니다 scriptB.sh.

나는 실행을 계획합니다.

ScriptA - ScriptB         
   |
   |
   _
            |
            _
   |
   |
   _
            |
            _

이 방법으로 시도했지만 프로세스가 종료되지 않습니다.

ScriptA.sh
./scriptB.sh &
exit

ScriptB.sh
./scriptA.sh &
exit

똑같지만 프로세스가 닫히지 않습니다.

ScriptA.sh
./scriptB.sh && exit

ScriptB.sh
./scriptA.sh && exit

어떤 제안이 있으십니까?

실제 스크립트:

스크립트 A.sh:

#!/bin/bash
val=123
directory_path=`pwd`
script_name=$0
if [ $val -eq 123 ];then
  echo "call B and exit"
  ./scriptB.sh $directory_path $script_name && exit 0
fi

스크립트 B.sh:

#!/bin/bash
directory_path=$1
exec_command=$2
cd
cd $directory_path
echo "call A and exit"
$exec_command && exit 0

답변1

고쳐 쓰다: 구조를 유지하려면 다음 두 파일을 만들 수 있습니다.

스크립트 파일

#!/bin/bash
./controller.sh a

스크립트 b.sh

#!/bin/bash
./controller.sh b

더 쉽게 할 수 있는 팁은 다음과 같습니다.

컨트롤러.sh

#!/bin/bash
# run   ./controller.sh a   to run a/b
# run   ./controller.sh b   to run b/a
if [ "$1" == "a" ]; then
  ./ascript.sh      
  ./bscript.sh

elif [ "$1" == "b" ]; then
  ./bscript.sh
  ./ascript.sh
else
  echo "choose a or b ./controller.sh [a|b]"
  exit 255
fi
exit 0

ascript.sh

#!/bin/bash
echo "script a"
# add code here

스크립트 파일

#!/bin/bash
echo "script b"
# add code here

관련 정보