Command-Line
執行某些命令後執行腳本
我有一個腳本列表
./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