2013-09-10 5 views
1

Я пытаюсь запустить программу bash, которая принимает несколько имен ввода командной строки, а затем принимает массив в качестве ввода командной строки.bash program read array

т.е.

#!/bin/bash 
name1=$1 
name2=$2 
my_array_input=("dog" "cat" "lion") 

В этом примере у меня name1 и name2 в качестве входных данных, а my_array_input объявляется и устанавливается внутри сценария.

В моем реальном скрипте я хотел бы также иметь имя1 и name2 как $ 1 и $ 2, но я также хотел бы получить от пользователя (неизвестный размер/переменный размер) my_array_input. Пользователь может вводить массивы разной длины и с собственным именем животных, как он пожелает ...

Обратите внимание, что все входы должны быть вводом командной строки.

Есть ли уловка для этого, используя скрипты bash?

Спасибо!

ответ

5

Аргументы к сценарию Bash (или любая программа в Unix-подобных операционных системах) - это всего лишь список строк, поэтому нет никакого способа сделать точно то, что вы описываете.

Однако, вы можете установить name1 к первому аргументу, name2 ко второму аргументу и my_array_input к все последующие аргументы:

#!/bin/bash 
name1="$1" 
name2="$2" 
my_array_input=("${@:3}") 

Если аргументы вышеприведенного сценария являются foo bar dog cat lion, то name1 будет be foo, name2 будет bar, а my_array_input будет массивом (dog cat lion).

+0

хороший ответ, решена моя проблема отлично! – Dnaiel