在 shell 脚本中实现时历史替换失败

HDe*_*007 -1 bash shell-script history-expansion

以下命令在命令行中运行

rsync -avh -r /Source/09_03_2016/ /Destination/
echo $(basename !:3)
Run Code Online (Sandbox Code Playgroud)

输出 09_03_2016

但是当我在 shell 脚本中执行此操作时,它不起作用

#! /bin/bash

/usr/bin/rsync -avh -r /Source/09_03_2016 /Destination/;
echo $(basename !:3)
Run Code Online (Sandbox Code Playgroud)

输出!:3

Lam*_*ert 5

在脚本中使用以下指令:

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

这将启用历史扩展,默认情况下仅针对交互式 shell 启用该历史扩展。

有关详细信息,请参阅man bash部分HISTORY EXPANSIONSHELL BUILTIN COMMANDS命令set