Как хранить (и загрузить) ZSH String Array в файл?

Вот как less -i (переключатель командной строки) работает в «нечувствительном к регистру» режиме (т.е. он по-прежнему чувствителен к верхнему регистру). Как указывает Жиль, использование this скомпилировано в man-db.

В дополнение к способам, указанным в ответе Жиля на WRT, задав псевдоним + - i или настраиваемый MANLESS , вы можете переключить строгое сопоставление регистра после открытия страницы руководства с помощью -i (который включает и выключает переключатель); вы увидите небольшое сообщение «Регистр имеет значение при поиске», и теперь x соответствует только x , а X соответствует только X .

Man-db man имеет переключатель -I , но это относится к поиску страницы руководства - например, по умолчанию man BASH будет предоставит вам страницу руководства по bash, тогда как man -I BASH - нет.

3
09.12.2018, 16:27
2 ответа

Два портативных(ksh, zsh, bash )решения AFAICT:

 typeset -p arr >./file              # save array
../file                            # read array

И

printf '%q\n' "${arr[@]}" >./file    # save array
eval "arr=( $(<./file) )"           # read array

Обратите внимание, что первое решение создаст локальную переменную, если она используется внутри функции в bash.

1
27.01.2020, 21:11

Просто сделай:

typeset array > file

Для загрузки:

source file

(вы также можете использовать typeset -p arrayдля сохранения атрибутов переменной массива (exported, unique... )).

В качестве альтернативы:

print -rl -- ${(qq)array} > file

Для загрузки:

eval "array=($(<file))"

За вашу разделительную идею:

print -r -- ${(j[separator])array} > file

Для загрузки:

array=("${(@s[separator])"$(<file)"}")

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

8
27.01.2020, 21:11

Теги

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