Задать вопрос
@ymfront

Как передать массив в Bash-скрипт?

Нужно в Bash-скрипт а качестве аргумента передать массив из языков: ru, en, fr, de, kk, pe, и т.д.
Языков может быть от 5 до 15. Как их можно передать в bash-скрипт, если заранее количество языков неизвестно?
  • Вопрос задан
  • 199 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 5
akelsey
@akelsey
./test.sh test1 test2 test3

test.sh:
#!/bin/bash
for i in "$@"; do
  echo "$i"
done
Ответ написан
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Так и передать, а потом разбить на элементы
Вариантов разбивки много, например из головы такой
#!/bin/bash
echo $1
for lang in $(echo $2 | tr "," "\n")
do
  echo $lang
done


./script.sh "other parameter" ru,en,fr,de,kk,pe
Ответ написан
Комментировать
xotkot
@xotkot
хорошо есть и хорошо весьма
test.sh
#!/usr/bin/env bash

Langs=($@)

for lang in "${Langs[@]}"; do
  echo "lang[$((i++))]=$lang"
done


$ ./test.sh ru en de
lang[0]=ru
lang[1]=en
lang[2]=de
Ответ написан
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Обычно я массивы в баше эмулирую строками и операциями "отбросить первый префикс", "отбросить последний суффикс".
Заводится пара (тройка, четверка) строк с одинаковым количеством элементов и синхронно по ним двигаемся.
Ответ написан
Комментировать
#!/bin/bash

# Проверяем, переданы ли аргументы
if [ "$#" -lt 5 ]; then
    echo "Необходимо передать от 5 до 15 языков."
    exit 1
fi

# Преобразуем аргументы в массив
languages=("$@")

# Выводим языки
echo "Переданные языки:"
for lang in "${languages[@]}"; do
    echo "$lang"
done


и
chmod +x languages.sh
./languages.sh ru en fr de kk pe
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы