iterar a execução do script: Uma chamada B, B chamada A

0

Eu tenho um script scriptA.sh que se uma variável assume um certo valor, tem que executar outro script scriptB.sh que execute algo e depois chamar um scriptA.sh , que irá chamar scriptB.sh e assim por diante.

Eu desenho a execução:

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

Eu tentei desta forma, mas o processo nunca está fechado

ScriptA.sh
./scriptB.sh &
exit

ScriptB.sh
./scriptA.sh &
exit

E também dessa forma, mas o processo nunca é fechado

ScriptA.sh
./scriptB.sh && exit

ScriptB.sh
./scriptA.sh && exit

Alguma sugestão?

Os scripts reais:

scriptA.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

scriptB.sh:

#!/bin/bash
directory_path=$1
exec_command=$2
cd
cd $directory_path
echo "call A and exit"
$exec_command && exit 0
    
por Cyr 30.01.2017 / 13:17

1 resposta

0

Atualização: Para manter sua estrutura, você pode criar esses dois arquivos:

scripta.sh

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

scriptb.sh

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

Aqui está uma sugestão para facilitar:

controller.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

bscript.sh

#!/bin/bash
echo "script b"
# add code here
    
por 30.01.2017 / 15:04