コマンドの出力とその戻り値をシェル スクリプトの変数にキャプチャする方法はありますか?
質問
それで、私にコマンドがあるとしましょう。 foo
, 、興味のある戻り値と出力文字列の両方を持つスクリプト内で、それらを変数に保存したいと考えています(少なくとも変数の出力と、その戻り値は変数に使用できます)。条件付き)。
例えば:
a=$(`foo`) # this stores the output of "foo"
if foo; then # this uses the return value
stuff...
fi
その出力をキャプチャするために私が思いつく最善の方法は、一時ファイルを使用することです。
if foo > $tmpfile; then
a=$(`cat $tmpfile`)
stuff...
fi
とにかくそれを簡素化することはできますか?
解決
この?
out=$(cmd)
rv=$?
if test $rv -eq 0; then
echo "all good"
echo $out
else
echo "wtf, exit code was $rv"
fi
ところで、$()とバッククォートは、をすることを意味し、同じ効果のための2つの構文は、唯一のは
書き込みをしたいです$(`foo`)
foo
は、あなたが再び実行するコマンドのテキストを出力した場合。同様ます:
foo()
{
echo echo date
}
$(foo)
$(`foo`)
他のヒント
output=`foo`
echo "Return: $?" # $? is the return code
バッシュから:(最初の列の最初の $ が私のプロンプトであることに注意してください)
$ A=$(echo abc; false); echo status:$? A:$A
status:1 A:abc
使用しないでください $()
バッククォートを追加すると、実際にコマンドが実行され、その出力が実行されます。
以下も参照してください。
所属していません StackOverflow