Ответ 1
Вы можете просто обернуть вещи в одинарные кавычки в оболочке.
$ emailsender.py -u username -p 'pass!!'
У меня есть простой python script, который получает имя пользователя и пароль в качестве аргумента. Но мой пароль содержит два восклицательных знака. Когда я вызываю script:
[email protected]:~/Desktop/$ emailsender.py -u username -p pass!!
чтобы ввести более ранние замены восклицательных знаков
[email protected]:~/Desktop/$emailsender.py -u username -p "passemailsender.py -u username -p passwget wget http://www.crobot.com.hr/templog"
Я могу избежать восклицательных знаков с обратной косой чертой (\), но мой пароль меняется. Есть ли решение для этого, как я могу избежать восклицательных знаков без изменения пароля?
Вы можете просто обернуть вещи в одинарные кавычки в оболочке.
$ emailsender.py -u username -p 'pass!!'
Вам нужно избегать его с помощью \
или процитировать его одинарными кавычками, иначе ваша интерпретация будет интерпретировать его.
emailsender.py -u username -p pass\!\!
или
emailsender.py -u username -p 'pass!!'
Как упоминалось другими, эта проблема не относится к Python, но вызвана тем, как вы передаете параметр пароля в script.
Вы захотите обернуть строку пароля в одинарные кавычки, чтобы убедиться, что она передана в script точно так же, как вы ее вводите, и не интерпретируется оболочкой.
Вы можете сделать это и для имени пользователя, если есть вероятность, что он включает восклицательный знак или другой специальный символ.
Например:
emailsender.py -u 'username' -p 'pass!!'
Вы пробовали
$ emailsender.py -u username -p "pass!!"
EDIT - это не сработает. Читать комментарии ниже