если
some_routine() {
echo "first"
echo "foo $1"
}
some_var=$(some_routine "second")
echo "result: $some_var"
, то все в порядке. Но результат, кажется, определяется первым "эхо". Другой способ - использовать "eval".some_var возвращает «first»
some_routine()
{
echo "cmj"
eval $2=$1
}
some_routine "second" some_var
echo "result: $some_var"
таким образом, some_var возвращает «second». bash не возвращает строку напрямую. Так что нам нужны некоторые хитрости.