使用 "!" 在脚本中执行具有相同参数的命令

Ric*_*ard 4 bash scripting

在shell中,我运行以下命令没有问题,

ls -al

!LS

第二次调用ls也列出带有-al标志的文件.但是,当我将上述脚本放到bash脚本中时,会抛出投诉,

!ls, command not found.

如何在脚本中实现相同的效果?

che*_*ner 6

您需要在脚本中启用命令历史记录和!-style历史记录扩展(默认情况下,这些都在非交互式shell中关闭):

set -o history
set -o histexpand
Run Code Online (Sandbox Code Playgroud)

扩展命令也会响应标准错误,就像在交互式shell中一样.您可以通过打开histverifyshell选项(shopt -s histverify)来阻止它,但在非交互式shell中,这似乎使历史记录扩展为空操作.