在命令行中将字符串`!23`替换为`docker`


17

我有一个带有参数的Maven命令:

mvn test -Dcommon_password=!23foo

该命令正在执行为

mvn test -Dcommon_password=dockerfoo

!23用代替docker。为什么会发生这种情况,我该如何避免呢?

Answers:


43

这是历史记录扩展!23历史记录中的第23个命令替换。

为避免这种情况,请使用单引号:

mvn test '-Dcommon_password=!23foo'

5
或使用set +H/set +o histexpand
ilkkachu

12
这是一个密码,可能包含各种外壳程序元字符。如M. Kitt的回答中所述,正确地报价和转义比禁用可能发生的可能性中的一种更好。当然,首先在过程参数中没有密码会更好。(-:
JdeBP '19

@JdeBP在我的问题中,出于简单起见,我以纯文本形式显示了密码。在一个真实的项目中,该论点从詹金斯的秘密证书中获取价值。因此它是被遮盖且安全的。
Vitalii Plagov
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.