2016-05-31 12 views
1

私は以下のように複数の変数を持つ配列を初期化しようとしています。Bash:Can Here Strings <<<複数の変数を入力として扱う?

StringOne="This is a Test String" 
StringTwo="This is a New String" 
read -r -a Values <<< "$StringOne" "$StringTwo" 

しかし、アレイは、アレイの初期化のための変数値を渡すこの方法で間違っているものだけを最初の変数.IEのStringOne

$ echo ${Values[0]} 
This 
$ echo ${Values[1]} 
is 
$ echo ${Values[2]} 
a 
$ echo ${Values[3]} 
Test 
${Values[4]} 
String 
$ echo ${Values[5]} 

$ echo ${Values[6]} 

$ 

から値を取得しているように思えますか?私たちは< < <演算子で複数の変数を渡しますか?

+0

$ {Values [5]} = $ {Values [7]} = a $ {Values [8]} = New '同様に –

+0

これはあなたの問題を解決しますか? ? 'read -r -a Values <<<" $ StringOne $ StringTwo "' – gudok

+0

ありがとう@gudok。これは現在働いています –

答えて

2

この方法で配列の初期化に変数値を渡す方法は間違っていますか?私たちは< < <演算子で複数の変数を渡しますか?

はい、いいえ。 <<<オペレータは、そのドキュメントではっきりと示されているように、1つのシェルワードをオペランドとして取ります。しかし、あなたが引用の適切な使用により、単一のシェルの単語に複数の変数の値を組み合わせることができます。

StringOne="This is a Test String" 
StringTwo="This is a New String" 
read -r -a Values <<< "$StringOne $StringTwo" 
echo "${Values[@]}" 

出力:

これは、これは新しい文字列

+0

出力を引用符と組み合わせることは考えていませんでした。今私はそれを得た。 –

0
あるテストの文字列であります

用途:

read -r -a Values <<< "$StringOne"" ""$StringTwo" 

または:

read -r -a Values <<< "$StringOne"' '"$StringTwo" 

または:

out="$StringOne $StringTwo" 
read -r -a Values <<< "$out" 

またはこのテーマに関するいくつかの他のバリエーション。

これは、<<<で送信された文字列が、その右側の文字列の拡張の結果であるために機能します。両方の変数を連結することで、両方の変数を1つの長い文字列として動作させることができます。

+2

または 'read -r -a Values <<<" $ stringOne $ stringTwo "' – andlrc

関連する問題