История изменений
Исправление 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"
}