我有一个脚本列表
./myscript <param> | grep "asd"
./myotherscript <param> <param> > file
...
当列表中的这些命令之一执行并完成时,如何自动运行另一个脚本?
答案1
有多种方法可以在特定命令之后自动执行某些操作:
功能
创建一个以您的特定命令命名的函数,然后执行该特定命令。我认为这是最简单、最干净的解决方案。
function myotherscript() {
command myotherscript "$@"
other_command_to_be_executed
}
桀骜
使用 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 与 bash