о чудо! работает. благодарю. жаль только что лишний раз bash вызывать. может ещё набегут эксперты и посоветуют более красивый вариант. пока не буду помечать как решённую.
Я вот что думаю, если ТС для своей задачи «сверху» тоже возьмёт нормальный язык программирования, а не Bash, возможно ему даже этот лексер не понадобится, т. к. будет всё сразу по-людски и сабжевый вопрос просто не возникнет.
Я тыкаю носом любителей баша и eval, что они распространяют дярявый говнокод, как минимум из-за случайной ошибки сносящий пользователю хомяк.
Учитывая, что ТС сам упомянул eval, логично предположить, что он в курсе рисков данного метода.
Также считаю необходимым отметить, что предложенное в треде выше решение имеет ровно ту же уязвимость.
Да, давно уже пора сделать standalone парсер шелловской грамматики в части кавычек и экранирования и использовать его из скриптов как внешнюю утилиту. Но я такого ещё не встречал, а написать пока ленюсь.
Дело вкуса, но тащить из-за этого Питон, мне кажется некрасивым.
Ни на йоту. Ты тупо убрал некоторые символы из строки. ТС хотел совсем другого. Кроме того, ты это сделал простынёй, когда можно было сделать одной строкой. Применять микроскоп нужно по его прямому назначению.
Ему и дано тупо удалить символы, а если у него там миллионы строк в строгом формате (да надо внести изменения) то однострочники будут тратить драгоценное время. Я предложил, выбирать как быть дело ТС
Ему и дано тупо удалить символы, а если у него там миллионы строк в строгом формате (да надо внести изменения) то однострочники будут тратить драгоценное время. Я предложил, выбирать как быть дело ТС
TC просил разбить строку на элементы массива. В его примере - три элемента массива.
И он ничего не говорил про миллионы строк и какую-то драгоценность времени. Не додумывай требований.
Как-то глупо очищать данные перед подачей в сложный и опасный парсер, когда есть простой и безопасный парсер. Чем проще система, тем она надёжнее и легче поддерживается.
Ещё проще бы было хранить данные с разделителем, через табуляцию например.
чем проще система, тем она надёжнее и легче поддерживается.
И тем больше раздражает своей тупостью по возможностям. Ибо сегодня простое будет достаточно, а завтра и $VAR захочется, а то и ${VAR[idx]}, но чтобы $(var) не делало, но была разница у $VAR и «$VAR» и так далее.