The below command works in command line
rsync -avh -r /Source/09_03_2016/ /Destination/ echo $(basename !:3)
Output 09_03_2016
But when I do this in shell script it does not work
#! /bin/bash /usr/bin/rsync -avh -r /Source/09_03_2016 /Destination/; echo $(basename !:3)
Output !:3
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Use the following directives in your script:
set -o history set -o histexpand
This will enable the history expansion which is only enabled for interactive shells by default.
See man bash section HISTORY EXPANSION and SHELL BUILTIN COMMANDS command set for details.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0