Наткнулся на такой вопрос на SO Как передать строку из функции в переменную? В баше переменные по умолчанию глобальные, просто используйте этот факт:
fun1(){
var1=$1
}
$ fun1 test
$ echo $var1
test
Но если сильно зудит можно попробовать что-то типа такого:
fun2(){
local var_name=$1; shift 1
printf -v $var_name '%s' "$@"
}
$ fun2 v2 some data
$ echo $v2
somedata
Или используя read
вместо printf
:
fun3(){
local var_name=$1; shift 1
read $var_name <<< "$@"
}
$ fun3 v3 some data
$ echo $v3
some data
Творите, выдумывайте, пробуйте!)