質問: SQL PLUS実行時にマイナスの値を返却値としたいです。 実行結果として以下のようになればよいのですが、 ``` > sqlplus -L user/pass@sid @DATA.SQL > echo $? > -1 ``` 単純にDATA.SQLファイルに EXIT -1 としても、以下のようにSQL PLUSの仕様上不可能のような記述がありましたが、SPなどを利用して実現可能でしょうか。方法があれば教えてください。OSはRedhatLinuxです。 > > **EXIT(戻り値)の上限** > > > UNIX 系の EXIT のステータスコードは 下位の 8ビットでマスクされるために 256 以上の数値を指定しても違う値に変換される。特に > > 256 の倍数は 下位 8ビットでマスクされると 0 になるので正常終了と誤認する危険がある。 Windows 系だからといって 256 > > 以上の戻り値を使用するとプラットフォームの互換性が無くなるので控える方がよい。 > > > SQL*Plus > EXIT、QUIT
回答: 回答ではないのですが、シェル(bash/zsh)の `exit status` に関して少し書きます。 ``` $ bash -c 'exit -1'; echo $? 255 $ bash -c 'exit -2'; echo $? 254 $ bash -c 'exit -3'; echo $? 253 ``` 上記の例は `bash` ですが、`zsh` でも同様の結果になります。 > > man bash(1) > > > EXIT STATUS > > > The exit status of an executed command is the value returned by the waitpid system call or equivalent function. **Exit statuses fall between 0 and 255**, though, as explained below, the shell may use values above 125 specially. > > > exit status は `unsigned char` として扱われていますので、負の値になることはありません。何らかの方法で sqlplus に -1 の 戻り値を持たせたとしても、シェルでの exit status は 255 となってしまいます。まぁ、 > > exit status 255 は -1 と見做す > > > とでもすれば良いのかもしれませんが、もしかすると sqlplus がエラーなどで exit status 255 を返す場合も無いとは言えず、適切ではないと思われます。