在 Bash 中,!# 是什么意思(感叹号和井号标签/井号)?

在 Bash 中,!# 是什么意思(感叹号和井号标签/井号)?

为什么这个命令会给出这样的输出:

$ echo !#
echo echo
echo

$

我读到了有关“!”的内容,它如何根据上下文否定或扩展历史。我只是不明白为什么它与 # 连接时会这样。

答案1

当你执行时,echo !#你实质上说的是“bash 你可以替换 !# 当前所在的整个命令行吗?(不包括 !# 本身)”

然后,Bash 会将替换的结果打印到 stderr,这就是您所看到的,然后下一行输出只是stdout 中的echo echo运行结果。echo echoecho

这在事件指示符部分中有详细说明bash 的联机帮助页

或多或少!#只是一个特殊的事件指示符,用于重复命令行

一个更清楚的例子;

echo "There's two of us!";!#

结果是:

echo "There's two of us!";echo "There's two of us!"; 
There's two of us! 
There's two of us! 

相关内容