사용! ! bash 함수 내부에서

사용! ! bash 함수 내부에서

.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

관련 정보