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

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

以下命令在命令行中运行

rsync -avh -r /Source/09_03_2016/ /Destination/
echo $(basename !:3)

输出 09_03_2016

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

#! /bin/bash

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

输出!:3

答案1

在脚本中使用以下指令:

set -o history
set -o histexpand

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

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

相关内容