#python #bash #argparse
#python #bash #argparse
Вопрос:
Я пишу инструмент CLI с использованием argparse.
Ниже приведен мой фрагмент кода:
parser.ArgumentParser()
parser.add_argument('--username')
parser.add_argument('--password')
args = parser.parse_args()
print(args.password)
Я запускаю скрипт на своем Mac:
>>> prog.py --username xyz --password abc$xyz
Вывод:
>>> abc
Я знаю, что это оболочка bash, которая интерпретирует ‘$ xyz’ как переменную bash и пытается заменить ‘$ xyz’
Есть ли способ обойти это, не заключая пароль в кавычки?
Комментарии:
1. backspace избегает знака доллара, поэтому вы можете сделать: $xyz
2. Это не проблема Python, это вопрос о том, как мне избежать специальных символов в вопросе bash .
3. Я знаю, что это не проблема Python, и я даже знаю, как избежать специальных символов в bash. @dkasak ответил на это правильно.
Ответ №1:
Вы можете поместить обратную косую черту перед $
: prog.py --username xyz --password abc$xyz
.
В противном случае нет. Вы правильно заметили, что это делает bash, поэтому к тому времени, когда Python / argparse получит команду, ничего нельзя будет сделать.