3

これは、私がやろうとしていることを説明するために必要な簡単なスクリプトです。

ssh -x user@remote-host "
function wtf
{
    rm /
}; wtf"

wait

そして、コマンドラインで次のように実行します。

> if ./wtf.sh; then echo yes; else echo no; fi
rm: cannot remove '\': Is a directory
yes

明らかにrmコマンドは失敗しましたが、wtf.sh成功しました。wtf.shそれを検出できるように、否定的な終了も返したいと思います。どうやってやるの?

4

1 に答える 1

2

$?最後に実行されたコマンドの戻りコードを保持するものを使用します。おそらく、実際のスクリプトは例ほど単純ではありません (したがって、wait)。変数retvalは wtf 関数からの戻りコードを格納し、値はスクリプトから返されます。

ssh -x user@remote-host "
function wtf
{
    rm /
    return $?
}; wtf; return $?"

wait
于 2013-06-07T22:33:39.073 に答える