Python argparse — аргументы отключаются, когда специальный символ bash передается в качестве аргумента

#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 получит команду, ничего нельзя будет сделать.