скрипте:
Pa$ - один спец символ потерян, посути сработало экранирование
На Linux все ок
Как получить значение без изменений?
Upd:
password является опцией
Сомневаюсь, что на линукс всё ок. Тебе банально шелл должен сожрать $$ и подставить переменную. В кавычки такое оборачивается.
В линухе я пихнул это в одинарные кавычки, все ок
А под виндой решил не пихать?
Не помогает
В зависимости от шелла экранирование разное.
Меня интересует cmd
В cmd не должно бы сжирать. Точно не PowerShell?
Вот подобная проблематика из 2011 https://forum.script-coding.com/viewtopic.php?id=5658
В случае питона и клика отрабатывает так же, вот и ломаю голову
C ^ понятно. С долларом не воспроизводится. (venv_311) C:\Users\evlez\Documents\python tests>py dump_argv.py --opt=test$$ ['dump_argv.py', '--opt=test$$'] (venv_311) C:\Users\evlez\Documents\python tests>type dump_argv.py import sys print(sys.argv)
А click использован? Вроде только sys
Я пока пытаюсь понять, на каком этапе оно у тебя вообще сжирается. Если съел терминал, до клика дело вообще не дойдёт. Но виндовый cmd не должен жрать $. Есть вариант, что в клике была отдельная своя обработка для подстановки переменных окружения, что-то есть такое в памяти.
Вот я пол дня пытался найти эту обработку. Но не нашел Sys.argv возвращает все как надо, то есть не само cmd жрет И я на клик грешу
А покажи объявление опции для клика.
К сожалению не у пк
@click.option("--pgpass", type=str, metavar="<str>", help="PostgreSQL password.", default="postgres", show_default=True)
Хм. Воспроизводится. Любопытно.
я конечно пока стал рассматривать обходной путь через url.encode или base64.... но пипец как хочется и сам клик расковырять)))
В общем, нифига не понятно, но очень интересно. Возможно, вообще баг в клике, по крайней мере как фича это не ищется.
Обсуждают сегодня