У меня есть простой сценарий Python, который получает имя пользователя и пароль как аргументы, но мой пароль содержит два восклицательных знака. Когда я называю свой сценарий как
salafek@dellboy:~/Desktop/$ emailsender.py -u username -p pass!!
команда, что я ввел более ранние замены восклицательные знаки:
salafek@dellboy:~/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!!'
Как упоминалось другими, эта проблема не специфична для Python, а вызвана тем, как вы передаете параметр пароля в сценарий.
Вы захотите заключить строку пароля в одинарные кавычки, чтобы убедиться, что она передается в сценарий точно в том виде, в котором вы ее вводите, и не интерпретируется оболочкой.
Вы также можете сделать это для имени пользователя, если есть вероятность, что оно включает восклицательный знак или другой специальный символ.
Например:
emailsender.py -u 'username' -p 'pass!!'
Вы пробовали
$ emailsender.py -u username -p "pass!!"
РЕДАКТИРОВАТЬ- Это не сработает. Прочтите комментарии ниже
Вам нужно экранировать его с помощью \
или заключить его в одинарные кавычки, иначе ваша оболочка интерпретирует его.
emailsender.py -u username -p pass\!\!
или
emailsender.py -u username -p 'pass!!'