如果我在 shell 中执行此操作,我可以看到!!
bash 变量包含最后一个命令。
$> echo foo
foo
$> echo !!
echo echo foo
echo foo
但是这个脚本
#!/bin/bash
mkdir /path/doesnt/exist ||
{
echo "Could not !!";
exit 1;
}
输出
mkdir: cannot create directory ‘/path/doesnt/exist’: No such file or directory
Could not !!
我预计输出是Could not mkdir /path/doesnt/exist
为什么这不起作用以及如何修复它?
答案1
因为!!
是读取 bash 历史记录的命令,而 bash 历史记录仅在交互模式下使用。
实际上,您不希望每个脚本都会填满您的命令历史记录。
来自 bash 手册,“历史扩展”部分
默认情况下,非交互式 shell 不执行历史记录扩展。