![在 shell 脚本中实现时历史替换失败](https://linux22.com/image/95993/%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E5%AE%9E%E7%8E%B0%E6%97%B6%E5%8E%86%E5%8F%B2%E6%9B%BF%E6%8D%A2%E5%A4%B1%E8%B4%A5%20.png)
以下命令在命令行中运行
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
。