Pull to refresh

Привет, иногда хочется утащить из скрипта переменные или функции. Это можно легко сделать используя 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 закроет текущую оболочку.

Творите, выдумывайте, пробуйте!)

Tags:
Total votes 2: ↑2 and ↓0+3
Comments1

Articles