2017-01-09 1 views
1

hbaseテーブルが存在するかどうかをチェックする必要があるため、メッセージを出力する必要があるbashスクリプトがあります。以下は私が試みたものです。hbaseテーブルがbashスクリプトから存在するかどうかを確認する方法

doesTableExist=$(echo -e "exists '$base_table_name' | hbase shell") 

if [ $? -eq 0 ] 
then 
    echo [BYOA_HIVE_INGEST] [INFO] "Table already exists" 
else 
    echo [BYOA_HIVE_INGEST] [ERROR] "Table does not exist" 
fi 

以下は、スクリプトの実行方法です。

sh test.sh $base_table_name = test 

しかし、これは、テーブルが存在するかどうかにかかわらず常に存在することを示します。私はここで間違って何をしていますか?どんな助けでも大歓迎です。

答えて

2

アイデアは、変数または変数を設定し、コマンドを実行するための一般的な構文は次のとおりです

base_table_name="test" sh test.sh 

、あなたはスクリプトに変数の値を渡している方法が間違っている、それがされている必要があり、権利であります

FOO=bar somecommand someargs 

のようなもの、あなたの戻りコードは、すべてのケースのために間違っている場合は、直接

if echo -e "exists '$base_table_name'" | hbase shell 2>&1 | grep -q "does exist" 2>/dev/null 
then 
    echo "[BYOA_HIVE_INGEST] [INFO] Table already exists" 
else 
    echo "[BYOA_HIVE_INGEST] [ERROR] Table does not exist" 
fi 
、次のようなコマンド出力で検索してみてくださいすることができます210

-qフラグとstderrリダイレクトをNULLに設定した場合、文字列が見つかるとgrepの戻りコードはif-clauseを満たす必要があります。

+0

実際に変数が設定されています。私はそれを渡します。変数名を取得するために引数を渡す引数を追加しました。私もそれらを印刷することができます。その名前の正しい結果を得ることはできません。 – mayooran

+0

@mayooran:私の更新を確認してください。 – Inian

+0

@mayooran変数を渡す方法が設定されていないことを保証します。あなたが前に何かしたことで既に設定されているかもしれませんが、あなたがそれを渡すことを記述する方法は*動作しません。 –

関連する問題