我知道当打印双重感叹号时,它会执行上一个命令。回声!!给出了一些我不理解的奇怪结果。 例如,当在bash脚本中键入下面的命令时,它也会输出echo作为输出的一部分
echo $$
echo !!
This prints the below output:
echo echo $$
echo 3150
(Why does echo precede every output ?)
答案 0 :(得分:17)
当您使用历史记录替换时,shell首先显示它将要执行的命令,并显示所有替换,然后执行它。这样您就可以看到生成的命令是什么,以确认它是您所期望的。
所以如果你输入:
some command
echo !!
!!
将替换为上一个命令的内容。所以它显示然后执行
echo some command
答案 1 :(得分:1)
它是由历史扩张引起的。引用它:
echo '!!'
echo \!\!
或禁用历史记录扩展:
shopt -u -o histexpand ## Or
set +H