我有一个简单的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"
我可以使用反斜杠(\
)来转义感叹号,但我的密码会更改。
是否有解决方案,如何在不更改密码的情况下转义惊叹号?
答案 0 :(得分:56)
你应该能够简单地用shell中的单引号括起来。
$ emailsender.py -u username -p 'pass!!'
答案 1 :(得分:17)
你需要用\
来转义它,或用单引号引用它,否则你的shell会解释它。
emailsender.py -u username -p pass\!\!
或
emailsender.py -u username -p 'pass!!'
答案 2 :(得分:2)
正如其他人所提到的,这个问题不是特定于Python的,而是由您将密码参数传递给脚本的方式引起的。
您需要将密码字符串包装在单引号中,以确保它与您键入的内容完全一致,并且不会被shell解释。
您也可以为用户名执行此操作,如果它可能包含感叹号或其他特殊字符。
例如:
emailsender.py -u 'username' -p 'pass!!'
答案 3 :(得分:-3)
你试过吗
$ emailsender.py -u username -p "pass!!"
编辑 - 这不起作用。阅读以下评论