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

sal*_*fek 38 linux shell arguments

我有一个简单的Python脚本,它接收用户名和密码作为参数,但我的密码包含两个感叹号.当我把我的剧本称为

salafek@dellboy:~/Desktop/$ emailsender.py -u username -p pass!!
Run Code Online (Sandbox Code Playgroud)

我之前输入的命令替换了感叹号:

salafek@dellboy:~/Desktop/$emailsender.py -u username -p "passemailsender.py -u username -p passwget wget http://www.crobot.com.hr/templog"
Run Code Online (Sandbox Code Playgroud)

我可以使用反斜杠(\)来逃避感叹号,但我的密码会更改.

有解决方案,如何在不更改密码的情况下逃避感叹号?

Joe*_*ton 60

您应该能够简单地在shell中用单引号括起来.

$ emailsender.py -u username -p 'pass!!'
Run Code Online (Sandbox Code Playgroud)


unb*_*eli 18

您需要\使用单引号将其转义或引用它,否则您的shell会解释它.

emailsender.py -u username -p pass\!\!
Run Code Online (Sandbox Code Playgroud)

要么

emailsender.py -u username -p 'pass!!'
Run Code Online (Sandbox Code Playgroud)

  • 只是为了记录,如果你不是双重引用参数,则转义可以正常工作.否则,'\'将按字面意思写入文件. (2认同)