Если ваши переменные присвоены только когда-либо в указанной выше точной форме, то есть
export a=10
тогда вы можете извлечь эти назначения с grep
и eval
результатами. Ваш script2.sh будет тогда
eval `grep "^export " script1.sh`
echo $a
Но делать это очень хрупко и может сломаться разными способами. Поместить назначения переменных в третий скрипт, созданный обоими, как предлагали другие, гораздо безопаснее.
Это может сломаться, если у вас есть настройки переменных внутри условных выражений, или если ваши экспортированные переменные зависят от других неэкспортированных переменных, которые были пропущены, или если вы устанавливаете и экспортируете переменные отдельно; и если вы используете подстановку команд в своих экспортах, они все равно будут запускаться с их возможными побочными эффектами.
if [ $doexport = 1 ]; then
export a=1
fi
a=2
export a
b=2
export a=$b
export a=`ls |wc -l`
Все это потенциально проблематично.