2016-05-27 20 views
1

引用符を持っていますが、bashが、私は必要とプロセスを改ざんしていない余分な引用符を追加し続けて変数を注入しながら、私はこれが私の例です...コマンドを実行するために引用符を含む変数を使用してコマンドを実行する方法は、bashでですか?

をしようとしている:

set -x 
MYVAR=" --name='user should login' " 
cucumber $MYVAR 
これを実行するに

この結果:

cucumber '--name='\''user' should 'login'\''' 

とコマンドが失敗しました。しかし、変数を使用せずにcucumber --name='user should login'をそのまま実行すると、すべてが期待どおりになります。

PS。コマンドラインを格納するためBASHアレイを使用することをお勧めしcucumber "${MYVAR}"またはcucumber "$MYVAR"

+0

'; MYVAR = " - name =ユーザーはログインする必要があります"; キュウリ "$ MYVAR" ' – anishsane

+2

これは[Bash FAQ 050](http://mywiki.wooledge.org/BashFAQ/050)です。 –

答えて

3

と同じ結果:

myvar=(--name 'user should login') 
cucumber "${myvar[@]}" 

は私も時々問題になることがすべて大文字の変数を使用して、あなたの変数を小文字に変換しました。

+0

ここでは、配列には1つの要素しかありません。 – anishsane

+0

単語分割を行う引用符の間にスペースがあります。 – anubhava

+1

'set -x; MYVAR = " - name =ユーザーはログインする必要があります";キュウリ "$ MYVAR" 'もうまくいくはず...?しかし、そのようなユースケースのために配列を使う習慣をOPに導入することは良いことです... +1 – anishsane

-1

これはノーbashの ISMSと、動作します。-x設定

MYVAR=" --name='user should login' " 
eval cucumber $MYVAR 
関連する問題