[英]How to pass argument with exclamation mark on 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"
我可以用反斜杠 ( \\
) 转义感叹号,但我的密码会更改。
有没有解决方案,如何在不更改密码的情况下避开感叹号?
您应该能够在 shell 中简单地用单引号括起来。
$ emailsender.py -u username -p 'pass!!'
你需要用\\
转义它或用单引号引用它,否则你的 shell 会解释它。
emailsender.py -u username -p pass\!\!
或者
emailsender.py -u username -p 'pass!!'
正如其他人所提到的,这个问题不是 Python 特有的,而是由您将密码参数传递给脚本的方式引起的。
您需要将密码字符串用单引号括起来,以确保它完全按照您键入的方式传递给脚本,并且不会被 shell 解释。
如果用户名可能包含感叹号或其他特殊字符,您也可以这样做。
例如:
emailsender.py -u 'username' -p 'pass!!'
你有没有尝试过
$ emailsender.py -u username -p "pass!!"
编辑-这是行不通的。 阅读下面的评论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.