쉘 스크립트로 구현하면 기록 교체가 실패합니다.

쉘 스크립트로 구현하면 기록 교체가 실패합니다.

다음 명령은 명령줄에서 실행됩니다.

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

출력 09_03_2016

하지만 쉘 스크립트에서 이 작업을 수행하면 작동하지 않습니다.

#! /bin/bash

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

산출! :삼

답변1

스크립트에서 다음 지시문을 사용합니다.

set -o history
set -o histexpand

이를 통해 기본적으로 대화형 셸에서만 활성화되는 기록 확장이 가능해집니다.

자세한 내용은 man bash섹션 HISTORY EXPANSIONSHELL BUILTIN COMMANDS명령을 참조하십시오 set.

관련 정보