.bashrc
내역에서 이전 명령을 다시 실행하고 캡처된 출력에 유용한 작업을 수행하는 bash 함수를 작성하려고 합니다 .
my_function() {
output=$(!!)
# Do something with output
}
(상태: bash: !!: command not found
. 명령과 쉘 내장 기능 사이에 차이가 있다는 것을 알고 있지만 함수 또는 이에 상응하는 기능(존재하는 경우)에서 이 내장 기능을 실행하는 방법을 알 수 없습니다. bash 함수의 이전 쉘 주문?
답변1
당신은 그렇게 할 수 없습니다. 별칭 확장과 마찬가지로 명령 내역 확장은 함수가 사용될 때가 아니라 함수가 정의될 때 수행됩니다.
그러나 내장 함수를 사용하여 기록에 직접 액세스할 수 있습니다 fc
.
$ redo(){ cmd=$(fc -nl -1 -1); echo "redoing '$cmd'"; eval "$cmd"; }
$ pwd
$ refo
redoing ' pwd'
/home2/ahq