2016-07-28 5 views
2

Я принял вход от пользователя в массив. Но мне нужно использовать их как список, разделенный запятыми. Как я могу это сделать? Ввод в моем случае - путь, подобный (/ usr/tmp /). Я ценю вашу помощь и время. Спасибо !Сохранять вывод массива в список, разделенный запятыми, в сценариях bash

Пример:

read "Number of subdirectories : " count 
for i in $(seq 1 $count) 
do 
    read -e -p " Subdir : $i: " arr[$i] 
done 

Ожидаемый результат:

$var = {arr[1],arr[2],arr[3],......} 

ответ

3

Если у вас есть массив как это:

$ declare -p arr 
declare -a arr='([1]="abc" [2]="def")' 

Вы можете отобразить его в разделенных запятыми формат:

$ (IFS=,; echo "{${arr[*]}}") 
{abc,def} 

Этот выход может быть сохранен в переменной оболочки с помощью подстановку команды:

$ var=$(IFS=,; echo "{${arr[*]}}") 
$ echo "$var" 
{abc,def} 
+0

Спасибо @John. Я пробовал, но он не работает. Я получил ошибку, такую ​​как No такой файл или каталог. – Rock26

+0

@ Rock26 Какая команда произвела ошибку? Также, пожалуйста, позвольте мне увидеть полное точное сообщение об ошибке. (Не повторите: скопируйте и вставьте его с вашего терминала сюда.) – John1024

+0

Sure ../ count_lines.sh: строка 22: = {plugme/web /, plugme/modules /}: Нет такого файла или каталога – Rock26