Как передать спор с восклицательным знаком на Linux?

У меня есть простой сценарий 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"

Я могу выйти из восклицательных знаков с обратной косой чертой (\), но мои изменения пароля.

Есть ли решение для этого, как я могу выйти из восклицательных знаков, не изменяя мой пароль?

38
задан Benjamin W. 18 September 2018 в 16:04
поделиться

4 ответа

Вы должны иметь возможность просто заключать вещи в одинарные кавычки в оболочке.

$ emailsender.py -u username -p 'pass!!'
60
ответ дан 27 November 2019 в 03:29
поделиться

Как упоминалось другими, эта проблема не специфична для Python, а вызвана тем, как вы передаете параметр пароля в сценарий.

Вы захотите заключить строку пароля в одинарные кавычки, чтобы убедиться, что она передается в сценарий точно в том виде, в котором вы ее вводите, и не интерпретируется оболочкой.

Вы также можете сделать это для имени пользователя, если есть вероятность, что оно включает восклицательный знак или другой специальный символ.

Например:

emailsender.py -u 'username' -p 'pass!!'
2
ответ дан 27 November 2019 в 03:29
поделиться

Вы пробовали

$ emailsender.py -u username -p "pass!!"

РЕДАКТИРОВАТЬ- Это не сработает. Прочтите комментарии ниже

-3
ответ дан 27 November 2019 в 03:29
поделиться

Вам нужно экранировать его с помощью \ или заключить его в одинарные кавычки, иначе ваша оболочка интерпретирует его.

emailsender.py -u username -p pass\!\!

или

emailsender.py -u username -p 'pass!!'
18
ответ дан 27 November 2019 в 03:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: