我知道当打印双重感叹号时,它会执行上一个命令.回声!! 给出了一些我不明白的奇怪结果.例如,当在bash脚本中键入下面的命令时,它也会输出echo作为输出的一部分
echo $$
echo !!
This prints the below output:
echo echo $$
echo 3150
(Why does echo precede every output ?)
Run Code Online (Sandbox Code Playgroud)
Bar*_*mar 18
当您使用历史记录替换时,shell首先显示它将要执行的命令,并显示所有替换,然后执行它.这样您就可以看到生成的命令是什么,以确认它是您所期望的.
所以,如果你输入:
some command
echo !!
Run Code Online (Sandbox Code Playgroud)
将!!替换为上一个命令的内容.所以它显示然后执行
echo some command
Run Code Online (Sandbox Code Playgroud)
这是由历史扩展造成的。而是引用它:
echo '!!'
echo \!\!
Run Code Online (Sandbox Code Playgroud)
或者禁用历史扩展:
shopt -u -o histexpand ## Or
set +H
Run Code Online (Sandbox Code Playgroud)
请参阅历史扩展。
| 归档时间: |
|
| 查看次数: |
7809 次 |
| 最近记录: |