私は入力値をそのまま返すbashスクリプトメソッドを持っています。しかし、戻り値は常に256のモジュロ値です。私はしばらくの間グーグルで見つかったthisという記事は、モジュロ256(私がすでに推測していたもの)だと言っていましたが、理由を説明しませんでした。誰かがなぜこれを行うのかについていくつかの光を当てることができますか?Bashメソッドの戻り値は常にモジュロです256
var=$1
hello() {
return $var
}
hello
ret=$?
echo $ret
>>> ./script 300
>>> 44
[POSIX準拠のため](http://pubs.opengroup.org/onlinepubs/009695399/functions/exit.html)。 –
おそらくより直接的には、 'WEXITSTATUS()'マクロを参照するPOSIX [Shell Command Langauge](http://pubs.opengroup.org/onlinepubs/009604499/utilities/xcu_chap02.html)仕様のセクション2.8.2 ['wait()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/wait.html)関数での使用のために文書化されています。後者は、それが提供する終了ステータスは 'exit()'または '_Exit()'に渡される値の下位8ビットであることを明示しています。 –
'return'文は、関数の戻り値として任意のデータを返すためのものではありません。 1バイトの終了ステータスを設定するのは* only *です。シェル関数は実際には通常の意味で関数ではありません – chepner