스크립트 목록이 있습니다.
./myscript <param> | grep "asd"
./myotherscript <param> <param> > file
...
목록에 있는 명령 중 하나가 실행되고 완료될 때 다른 스크립트를 자동으로 실행하려면 어떻게 해야 합니까?
답변1
특정 명령 후에 특정 작업을 자동으로 수행하는 다양한 방법이 있습니다.
기능
특정 명령의 이름을 딴 함수를 만든 다음 해당 특정 명령을 실행합니다. 나는 이것이 가장 간단하고 깨끗한 해결책이라고 생각합니다.
function myotherscript() {
command myotherscript "$@"
other_command_to_be_executed
}
다루기 힘든
precmd
zsh를 사용하면 프롬프트 전에 실행될 함수를 만들 수 있습니다 . 이를 통해 다른 명령을 실행할 수 있지만 실행할 명령을 직접 결정해야 합니다.
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