hbase shell non-interactive mode
hbase shell は実行したいコマンドを渡すことで、起動しなくてもコマンドの実行結果を受け取れます。
# echo "list" | hbase shell list TABLE 0 row(s) in 0.4830 seconds []
コマンドの終了コードも受け取れます。
# echo $? -> 0
これは便利なのですが、もし実行が何らかの理由で失敗した場合も、コマンドの終了コードは 0 (成功) で返ってきます。
# echo "invalid" | hbase shell invalid NameError: undefined local variable or method `invalid' for #<Object:0x79b18230>
# echo $? 0
出力されたメッセージを解析しないとダメかなと思ったら、non-interactive mode と呼ばれるモードがありました。
オプション n を付けるだけです。
# echo "invalid" | hbase shell -n ERROR NameError: undefined local variable or method `invalid' for #<Object:0x3dce6dd8>
# echo $? 1
不要なメッセージも表示されなくなったし、コマンドの終了コードは 1 (失敗) で返ってきてくれます。
やや古いドキュメントですが、このオプション付きで実行することが普通みたいですね。
ドキュメントをチェックして良かった。