2016-04-03 12 views
1

read -p "ENTER 1 - 5 WORDS" v1 v2 v3 v4 v5を使用すると、変数vにコマンドラインで値を入力することができます。これは最も実用的なアプローチですか?より多くの変数を割り当てたいとします。私はこれを同じようにリストしますか?私はread -p "ENTER 1-20 WORDS" {v1..v20}を試しましたが動作しませんでした。ユーザー入力から複数のbash変数を割り当てる方法

答えて

2

vは配列の一部ではありません。これを試してみてください:

read -p "ENTER 1-20 WORDS" v{1..20} 
1
あなたは read -aを配列に読みたいかもしれません

$ read -a arr -p "Enter words: " 
Enter words: v1 v2 v3 v4 v5 
$ echo "${arr[@]}" 
v1 v2 v3 v4 v5 
$ read -a arr -p "Enter words: " 
Enter words: v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 
$ echo "${arr[@]}" 
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 

これはシェルの単語分割を使用して、アレイarrに入力を割り当てては、の要素は、使用してアクセスすることができます${arr[0]},${arr[1]}など

主な利点は、配列に入力した要素の数と同じ数の要素が含まれていることと、事前に数がどれだけあるかを事前に知る必要がないことです。

+0

これを少し拡張できますか?私は理解しづらい。たとえば、 'grep'を使用して、複数の文字列を検索し、それらの文字列が何であるか、または入力される文字列の数についての事前の概念を持たずに検索したいとします。必要なら元の質問を更新することができます。 –

+0

@ user556068それはあなたがgrepしたいことに少し依存します:すべての用語、またはそれらのどれか。 [この質問](http://stackoverflow.com/questions/36275421/how-to-make-a-script-to-make-multiple-greps-over-a-file)は、複数の検索からgrepコマンドを作成するように頼みます条項。それとも正確には分かりませんか? –

+0

"主な利点は、入力した数の要素が配列に正確に保持されていることと、事前に数がどれくらいあるかを知る必要がないことです。ですから、配列変数を使用して定義されていない数のユーザー定義変数を任意に、またはすべてgrepしたい場合、どうすればよいでしょうか?たとえば、実行1:3つのランダムな用語をgrepしたい。実行2:私は7つのランダムな用語の異なるセットをgrepしたいです。ラン3:4つのランダムな用語をgrepしたい。 –