社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

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 (失敗) で返ってきてくれます。

やや古いドキュメントですが、このオプション付きで実行することが普通みたいですね。

ドキュメントをチェックして良かった。