Наткнулся на такой вопрос на 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
Творите, выдумывайте, пробуйте!)
