Как преобразовать массив bash в список и сохранить в файл?

#bash

Вопрос:

У меня есть массив, и я хочу преобразовать его в виде списка и сохранить в файл.

Вот что я попробовал:

 export arrVal=(a,b,c) echo NEWLIST="${arrVal[@]}" gt;gt; newtextfile  

Выход:

 NEWLIST=a,b,c  

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

 NEWLIST=[a,b,c]  

Комментарии:

1. arrVal=(a,b,c) создает массив с одним элементом. Его ценность такова a,b,c . Разделитесь пробелами, чтобы создать больше элементов.

Ответ №1:

Вы можете добавить квадратные скобки в свое выражение, что-то вроде этого:

 export arrVal=(a,b,c)  echo NEWLIST="[${arrVal[@]}]"  

Выход:

 NEWLIST=[a,b,c]  

Комментарии:

1. спасибо за ответ, что произойдет, если я удалю ключевое слово экспорта ?

2. С переменной экспорта является переменной среды, без является переменной «оболочки». Если вам нужно использовать ту же переменную в другой части (например, для определения пути в конфигурации программного обеспечения), вам необходимо сохранить ключевое слово export.

3. Я хочу использовать NEWLIST в качестве списка в файле .env , поэтому я спросил

4. Вы можете избежать ключевого слова экспорта.

5. В настоящее время у меня есть один массив и целочисленная переменная в bash, как сразу записать в файл без добавления? здесь я должен написать в файл newtextfile. Не могли бы вы, пожалуйста, помочь мне с этим. Спасибо, Якопо Бономи

Ответ №2:

Как написал @pmf в комментарии…

 arrVal=(a,b,c)  

…является только одним значением ключа 0 .

Смотри…

 array=(a,b,c) echo ${#array[@]} # puts out: 1 # Or only key 0... echo ${array[0]} # puts out: a,b,c  

Сейчас…

 array=(a b c) echo ${#array[@]} # puts out: 3  # You can loop over it with... for key in ${array[@]}; do echo ${key}; done # That puts out... a b c