トラップについて読んでいましたが、私のシェルスクリプトではreturnだけが機能していたので、返される状態やコードが何であるかを知りたかったです。
#!/bin/bash
seeOutput=`return`
echo $seeOutput
新しい行を返し、端末で完了すると、次のように表示されます。
-bash: return: can only `return' from a function or sourced script
私はすでにそれを知っています:p "return"の終了ステータスを知る必要があります。
答え1
あなたがやっていることは、return
不可解なシェルコマンドを呼び出すことです。通常、return
後続の値がない場合は、最後に実行されたコマンドの終了ステータスが返されます。
From man
: 関数を終了し、n で指定された戻り値を返します。 nが省略された場合、返される状態は、関数本文で最後に実行されたコマンドの状態です。
答え2
戻りコードは$?に格納されます。
false ; echo $?
true ; echo $?
戻ってくる
1
0
Unixの規則は、0はOKを意味します。あなたの例では、seeOuputは後で参照されるコマンドのすべての出力を保存します。
出力コードと戻りコードが間違っていないことを確認してください。
答え3
これが私が使用する方法です:
f()
{
ls $AAA
return $?
}
g()
{
f
return $?
}
d()
{
g
echo $?
}
AAA=
d
_
<contents of dir>
0
_
AAA=sdsasdasd
d
_
ls: sdsasdasd: No such file or directory
2