Ваша функция B не вызывает A1.
Обратите внимание, что output=$($1)
не будет делать то, что вы ожидаете, потому что все, что выполняется внутри $(...)
, будет выполняться в другом процессе, и когда этот процесс будетзавершить, заданное вами значение больше не будет доступно.
Итак:
function B
{
output=\`$1\` # <-- this will not call the $1 but will only print it
output=`$1` # <-- ( $($1) is a better style ) - will call whatever
# inside $1, but in another process
$1 # <-- here is the missing call in the current process.
...
}
Вы можете использовать перенаправление, например, A1 > tmpfile
файл или именованный канал, чтобы получить на выходечерез файловую систему, сохраняя побочный эффект в текущем процессе:
function B
{
$1 > tempfile
read output < tempfile
echo output=$output
echo result1=$result1
}
Будет делать то, что вы ожидаете, но будет использовать tempfile
в вашей файловой системе.