将字符串(特别是 ! 符号)保存在变量中并显示它

将字符串(特别是 ! 符号)保存在变量中并显示它

我想把一个字符串(由特殊!符号组成)放在一个变量中,比如说,

var="!f then"

然后我想显示该字符串或者在其他地方使用它:

echo $var

但是当我输入时,var="!f then"会出现以下信息:

var="for f in Tor*; do mv "$f" "$f-Win"; done then"

如果我使用类似转义符var="\!f then",那么转义符也会出现在字符串中。

$ echo $var  
\\!f then

如何将其用作!字符串中的元素?

答案1

那是bash历史扩展你正在经历:

!string
  Refer to the most recent command preceding the current position
  in the history list starting with string.

正如我所解释的这里,历史扩展是在双引号内进行的,因此 保留两种引用方式!

var=\!f\ then # either use <b>only</b> backslash
var='!f then' # or just single quotes

答案2

字符是用于引入历史命令(参见)!的特殊字符,其用法类似于重新执行下一个命令。改用。bashman bash!!\!

相关内容