LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

В лоб:

capture() {
    local cmd="$1"
    local stdout="$2"
    local stderr="$3"

    local f_stdout=$(mktemp)
    local f_stderr=$(mktemp)

    $cmd >$f_stderr 2>$f_stdout

    local _ifs=$IFS
    eval "IFS= $stdout=\$(cat '$f_stdout')"
    eval "IFS= $stderr=\$(cat '$f_stderr')"
    IFS=$_ifs

    rm -f "$f_stderr" "$f_stdout"
}

capture "ping -c 3 whatever.org" PING_STDOUT PING_STDERR
echo STDOUT: $PING_STDOUT
echo STDERR: $PING_STDERR 

Исходная версия KennyMinigun, :

В лоб:

capture() {
    local cmd="$1"
    local stdout="$2"
    local stderr="$3"

    local f_stdout=$(mktemp)
    local f_stderr=$(mktemp)

    $cmd >$f_stderr 2>$f_stdout

    local _ifs=$IFS
    IFS=
    eval "$stdout=\$(cat '$f_stderr')"
    eval "$stderr=\$(cat '$f_stderr')"
    IFS=$_ifs

    rm -f "$f_stderr" "$f_stdout"
}