2017-05-04 8 views
0

コマンドに引数を渡すこと:バッシュ私はバッシュで次のコマンドを実行する必要が

beeline -u "${DATALAKE_NAMENODE_HIVE}:${DATALAKE_NAMENODE_PORT_HIVE}/pcgexp; -hiveconf .... -f ..... " 

事があるというLinuxでは「;」文字はコマンドの終了を示す指標であり、環境変数も使用する必要があります。これどうやってするの? これをどうすれば実現できますか?

+1

各フラグのテキストを引用符で囲んでください。引用符で囲まれています。したがって、-u "..." -hiveconf "..." -f "..." –

+0

'env_var = valueコマンド引数'のようなコマンドで環境を指定することができます。 – zhenguoli

+0

ここにあるように、引用符で囲まれたセミコロンは 'bash'に特別な意味を持ちません。 – chepner

答えて

0

@ilkkachuからの回答は、chepnerのコメントと同じようにお金になります。引用符付きのセミコロンは特別な意味を持ちません。引用符で囲まれた引数は引用符で囲まれた引数の集合よりも意味があります。

つまり、bashで引数を扱うもう1つの便利な方法は、配列を使用することです。

declare -a b_args=() 

b_args+=(-u "${DATALAKE_NAMENODE_HIVE}:${DATALAKE_NAMENODE_PORT_HIVE}/pcgexp;") 
b_args+=(-hiveconf "....") 
b_args+=(-f ".....") 

beeline "${b_args[@]}" 

これは、管理に役立ちます - あなたが把握する超長いコマンドラインを持たずに設定されているものの明確な見解を持って、引数リストの一部をコメントアウトすることができます。

通常の(非結合の)配列では、引数は常にインデックスの数値順に出力されます。インデックスは常に配列に追加されるたびに増加します。

0

はちょうどあなたが(短いVAR名に変更)必要な部品を引用:

beeline -u "${var}:${anothervar}/pcgexp;" -hiveconf .... 

これらの引数を与えること、varfooが含まれており、anothervarbarが含まれている場合:

引用
-u 
foo:bar/pcgexp; 
-hiveconf 
.... 

空白は文字列を単一の引数にします。必要な場合とそうでない場合があります。