以下命令在命令行中运行
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 EXPANSION
和SHELL BUILTIN COMMANDS
命令set
。