#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