특정 명령을 실행한 후 스크립트 실행

특정 명령을 실행한 후 스크립트 실행

스크립트 목록이 있습니다.

  • ./myscript <param> | grep "asd"

  • ./myotherscript <param> <param> > file

  • ...

목록에 있는 명령 중 하나가 실행되고 완료될 때 다른 스크립트를 자동으로 실행하려면 어떻게 해야 합니까?

답변1

특정 명령 후에 특정 작업을 자동으로 수행하는 다양한 방법이 있습니다.

기능

특정 명령의 이름을 딴 함수를 만든 다음 해당 특정 명령을 실행합니다. 나는 이것이 가장 간단하고 깨끗한 해결책이라고 생각합니다.

function myotherscript() {
   command myotherscript "$@"
   other_command_to_be_executed
}

다루기 힘든

precmdzsh를 사용하면 프롬프트 전에 실행될 함수를 만들 수 있습니다 . 이를 통해 다른 명령을 실행할 수 있지만 실행할 명령을 직접 결정해야 합니다.

function precmd() {
   last_cmd=$(history -1 |  sed -e "s/^[ ]*[0-9]*[ ]*//g")
   case "$last_cmd" in
   *myscript*) other_command;;
   *myotherscript*) other_other_command;;
   esac
}

세게 때리다

Bash에는 PROMPT_COMMAND자신만의 기능을 구현할 수 있는 precmd변수가 있습니다. 이를 사용하려면 프롬프트 전에 실행될 명령으로 설정해야 합니다.

PROMPT_COMMAND="${PROMPT_COMMAND};bash_precmd"

function bash_precmd() {
  last_command=$(history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g")
  case "$last_command"  in
  *pattern*) command ;;
  esac
}

bash를 사용하고 있고 비슷한 것을 사용하고 싶 preexec거나 precmd살펴보고 싶다면bash를 사용한 precmd 및 preexec

관련 정보