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

Как правильно инициализировать массив в shell скрипте?

Написал небольшой скрипт для поиска скриптов в заданной папке и запуска их. При запуске ругается на круглые скобки в строке инициализации массива.
Сам скрипт:
#!/bin/sh

scripts_path="/home/anatoliy/scripts/test/"
scripts_names=( $(ls -a $scripts_path | egrep '\.sh$') )

for i in "${scripts_names[@]}"; do
	echo "=== Start script $i ==="
	sh $scripts_path$i
	echo "=== End script $i"
done

Ошибка:
test.sh: 4: test.sh: Syntax error: "(" unexpected
ОС: Ubuntu 14.04
  • Вопрос задан
  • 521 просмотр
Подписаться 3 Оценить 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
Anatol_s
@Anatol_s Автор вопроса
Решил проблему не создавая массив в переменной, а выполняя поиск скриптов в for.
#!/bin/sh

scripts_path="/home/anatoliy/scripts/test/"

for i in $(ls -a $scripts_path | egrep '\.sh$'); do
	echo "=== Start script $i ==="
	sh $scripts_path$i
	echo "=== End script $i"
done

Но почему не хочет инициализировать массив предыдущим способом я так и не понял.
Ответ написан
@abcd0x00
Можешь попробовать код
[guest@localhost ~]$ arr=($(echo -e "a a\nb b\nc c"))
[guest@localhost ~]$ echo ${#arr[@]} ${arr[@]} . ${arr[0]}
6 a a b b c c . a
[guest@localhost ~]$
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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