在shell中,我运行以下命令没有问题,
ls -al
!LS
第二次调用ls也列出带有-al标志的文件.但是,当我将上述脚本放到bash脚本中时,会抛出投诉,
!ls, command not found.
如何在脚本中实现相同的效果?
您需要在脚本中启用命令历史记录和!-style历史记录扩展(默认情况下,这些都在非交互式shell中关闭):
set -o history
set -o histexpand
Run Code Online (Sandbox Code Playgroud)
扩展命令也会响应标准错误,就像在交互式shell中一样.您可以通过打开histverifyshell选项(shopt -s histverify)来阻止它,但在非交互式shell中,这似乎使历史记录扩展为空操作.