Quando você executa os scripts 1-3 dentro do seu script principal, eles são executados dentro de seu próprio sub-shell, e é por isso que eles não reconhecem as variáveis definidas em seu shell pai. Use export
para disponibilizar variáveis para sub-shells:
#!/bin/sh
export var1="1"
export var2="2"
bash script1.sh
bash script2.sh
bash script3.sh
Uma alternativa (relevante para sua segunda pergunta) seria passar as variáveis para os scripts como parâmetros posicionais :
#!/bin/sh
var1="1"
var2="2"
bash script1.sh "$var1" "$var2"
bash script2.sh "$var1" "$var2"
bash script3.sh "$var1" "$var2"
Dentro dos scripts 1-3, essas variáveis estarão disponíveis como $1
e $2
, respectivamente.