1

したがって、戻り値と関心のある出力文字列の両方を持つスクリプトにコマンドがあり、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

とにかく私はそれを単純化することができますか?

4

3 に答える 3

4

これ?

out=$(cmd)
rv=$?
if test $rv -eq 0; then
  echo "all good"
  echo $out
else
  echo "wtf, exit code was $rv"
fi

ところで、$()とbackticksは同じ効果の2つの構文です。つまり、書きたいだけです。

$(`foo`)

foo再度実行したいコマンドのテキストを出力する場合。お気に入り:

foo()
{
  echo echo date
}
$(foo)
$(`foo`)
于 2009-11-17T02:51:24.897 に答える
3
output=`foo`
echo "Return: $?" # $? is the return code
于 2009-11-17T02:51:34.100 に答える
2

bashから:(最初の列の最初の$が私のプロンプトであることに注意してください)

$ A=$(echo abc; false); echo status:$? A:$A
status:1 A:abc

$()プラスのバッククォートは実際にコマンドを実行してからその出力を実行するため、使用しないでください。

参照:

于 2009-11-17T02:52:01.767 に答える