繁体   English   中英

如何在 Linux 上传递带有感叹号的参数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM