В Bash можно передать массив как список аргументов в командной строке, и в самом скрипте можно использовать специальные конструкции для работы с этими аргументами. Вот несколько способов, как это сделать.
### Способ 1: Передача как список аргументов
Вы можете передать языки в качестве аргументов командной строки. Например:
```bash
#!/bin/bash
# Сохранение массива в переменной
languages=("$@")
# Вывод массива
for lang in "${languages[@]}"; do
echo "$lang"
done
```
Запускаем скрипт следующим образом:
```bash
./script.sh ru en fr de kk pe
```
### Способ 2: Передача через строку с разделителем
Другой способ — передать массив как строку с разделителем, например через запятую, и затем разбивать эту строку на массив внутри скрипта:
```bash
#!/bin/bash
# Принятие строки с языками
input="$1"
# Преобразование строки в массив
IFS=',' read -r -a languages <<< "$input"
# Вывод массива
for lang in "${languages[@]}"; do
echo "$lang"
done
```
Запускаем скрипт следующим образом:
```bash
./script.sh "ru,en,fr,de,kk,pe"
```
### Способ 3: Использование цикла читателя
В этом случае можно передавать языки по одному через стандартный ввод, вызывая скрипт таким образом:
```bash
#!/bin/bash
# Объявляем пустой массив
languages=()
# Чтение языков из стандартного ввода
while read -r lang; do
languages+=("$lang")
done
# Вывод массива
for lang in "${languages[@]}"; do
echo "$lang"
done
```
Запускаем скрипт следующим образом, перенаправляя ввод:
```bash
printf "ru\nen\nfr\nde\nkk\npe\n" | ./script.sh
```
### Заключение
Выберите подходящий способ в зависимости от ваших требований. Первый способ проще всего, если не нужно дополнительно форматировать входные данные. Второй способ удобен для передачи данных, разделенных запятыми, а третий полезен, когда массив нужно вводить по строкам.