Как преобразовать список массивов в одну переменную с запятой в сценарии оболочки - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть массив, как показано ниже

data=(1,2,3,4,5)

${data[*]}

Вывод:

1 2 3 4 5

Приведенный выше вывод похож на \n

Я просто хочу использовать для цикла и добавлять каждое значение в переменную с разделенной запятой, как показано ниже:

testData=1,2,3,4,5

Любая идея, как я могу добиться этого, используя FOR цикл в сценарии оболочки.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Использование bash преобразования параметров и подстановка :

x=(1 2 3 4 5)  x=${x[@]@P}  x=${x// /,} ;  echo $x

Выход:

1,2,3,4,5
0 голосов
/ 10 февраля 2019

Если ваш ввод действительно был массивом, как в:

data=( 1 2 3 4 5 )

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

testData=$(IFS=,; printf '%s\n' "${data[*]}")

... или с большим прицелом на эффективность:

printf -v testData '%s,' "${data[@]}"
testData=${testData%,}

, после чего

echo "$testData"

будет излучать:

1,2,3,4,5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...