В /etc/samba/smb.conf используется два типа комментариев: начинающихся с # и с ; [root@host-15 backend3]# . libshell [root@host-15 backend3]# echo '; logon path = \\%L\Profiles\%u' > smb.ini [root@host-15 backend3]# vim /bin/shell-ini-config [root@host-15 backend3]# export shell_ini_config_prefix='' [root@host-15 backend3]# export shell_ini_config_comment='#;' [root@host-15 backend3]# export shell_ini_config_comment='(#|;)' [root@host-15 backend3]# ini_config_set smb.ini global param val [root@host-15 backend3]# cat smb.ini ; logon path = \\%L\Profiles\%u \\%L\Profiles\%u\\%L\Profiles\%u [global] param = val
Андрей, а ты можешь словами описать чего хочется ?
Лёш, ну как мне понятно - хочет видимо как-то указывать что комментарии могут быть разные и точка с запятой, и шарп и два слэша.
Но из примера скрипта я тоже нихрена не въехал ;)
(В ответ на комментарий №3) > Но из примера скрипта я тоже нихрена не въехал ;) Вот-вот :) Просто как правило в конфигах только один тип комментариев.
(В ответ на комментарий №2) > Лёш, ну как мне понятно - хочет видимо как-то указывать что комментарии могут > быть разные и точка с запятой, и шарп и два слэша. К сожалению так сделать нельзя т.к. в ini_config_comment непонятно что использовать в качестве комментария. Библиотека не рассчитывает на то что в shell_ini_config_comment будет находиться не признак комментария (один символ или последовательность).
Мне встречались конфиги в которых сразу два типа комментария. А какие сложности использовать условия (перечисление) при выборе комментариев ?
А, вопрос что с записью. Да, тут либо выбрать первый символ, либо отдельную настройку для записи комментариев.
(В ответ на комментарий №7) > А, вопрос что с записью. Да, тут либо выбрать первый символ, либо отдельную > настройку для записи комментариев. На чтение всё более-менее понятно. Вопрос как вычленить символы (их может быть несколько) из списка. Сейчас последовательность в shell_ini_config_comment это признак комментария. Чтобы и сколько бы там ни было. Идея с паттерном на чтение в одной переменной и символом комментария на запись в другой мне не нравится. Если хочется иметь список, то по хорошему нужно делать отдельную переменную и в ней отдельно описывать, чтобы потом можно было выбрать. А это уже несколько другая задача по сложности.
Ну, если считать что паттерн разделяется '|' то вычленить из этой последовательности первый вполне реально. А какие ещё варианты паттернов используются для поиска комментариев ?
(В ответ на комментарий №9) > Ну, если считать что паттерн разделяется '|' то вычленить из этой > последовательности первый вполне реально. "#|\||\\|\;;" Какие символы перечислены ? :) Разбор такой строки сложнее чем кажется. > А какие ещё варианты паттернов используются для поиска комментариев ? Не понял вопроса.
Перечислено: # \ \\ \;;
Хотя, ты прав. Но в переменную попадёт всё равно: #|||\|;; Т.е. - в твоём случае экранирование уберётcя на этапе присвоения и разбирать тебе придётся уже "очищенную переменную"
Для протокола: "#|\||\\|\;;" это "#" или "|" или "\" или ";;". Разделителем является "|" экранирование как в шелле. > Т.е. - в твоём случае экранирование уберётcя на этапе присвоения и разбирать > тебе придётся уже "очищенную переменную" Можно присвоить это с экранированием. Разобрать эту строчку тоже можно (я не говорил, что этого сделать нельзя). Вот только код для этого будет примерно с половину всего shell-ini-config. Я исхожу из того сколько сколько усилий нужно потратить ради достижения цели и в данном конкретном случае гораздо проще привести разные типы комментариев к одному.