2016-04-03 3 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: я хочу grep 3 случайных выражения. В run 2: я хочу grep разного набора из 7 случайных терминов. При запуске 3: я хочу grep 4 случайных выражения. –

Смежные вопросы