Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

или

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

Ответ 3

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

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

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

Например:

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

Ответ 4

Вы пробовали

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

EDIT - это не сработает. Читать комментарии ниже