Command-Line

執行某些命令後執行腳本

  • May 19, 2012

我有一個腳本列表

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

當列表中的這些命令之一執行並完成時,如何自動執行另一個腳本?

有多種方法可以在特定命令之後自動執行某些操作:

功能

創建一個以您的特定命令命名的函式,然後執行特定命令。在我看來,這是最簡單、最乾淨的解決方案。

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

zsh

使用 zsh 您可以創建一個precmd將在提示之前執行的函式。這允許您執行任意其他命令,但您必須自己確定執行的命令。

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看看precmd 和 preexec with bash

引用自:https://unix.stackexchange.com/questions/39007