Привет, иногда хочется утащить из скрипта переменные или функции. Это можно легко сделать используя source. Но есть заковыка. Скрипт-источник будет выполнен, что не всегда удобно. Пример:
$ cat test #!/bin/bash var1=bim var2=bom echo you should not see this $var1 $var2
Пробуем засорсить:
$ var1= var2=; . ./test; echo $var1 $var2 you should not see this bim bom bim bom
Мы получили вожделенные переменные но при этом выполнился нежелательный код. Как этого избежать? Можно немного модифицировать скрипт:
$ cat test #!/bin/bash var1=bim var2=bom [[ $1 == only_vars ]] && return echo you should not see this $var1 $var2
Теперь если сорсить скрипт с параметром only_vars, нежелательный код будет опущен, пробуем:
$ var1= var2=; . ./test only_vars; echo $var1 $var2 bim bom
Важно использовать именно return, exit закроет текущую оболочку.
Творите, выдумывайте, пробуйте!)
