Shell-Script

如何檢測正在執行的命令,然後在目前命令之後執行附加命令

  • August 11, 2018

我希望 shell 檢測到我已經執行了一個特定的命令,然後在執行該命令後,執行另一個命令。

例如:當我每次執行命令時:git commit -m " "

首先完成上述命令,然後執行另一個命令,例如:python check.py

我傾向於修改.bash_rc文件。我對嗎 ?

提前致謝。

trap在 bash 中使用命令。

陷阱

$$ -lp $$ $$ [arg $$信號規格…] 如果 sigspec 是 DEBUG,則在每個簡單命令之前執行命令 arg …

現在你唯一的問題是你的陷阱命令是在命令之前而不是之後執行的。但是您可以使用 引用要執行的命令$BASH_COMMAND,並且可以導致該命令不被執行。

擴展調試

  1. 如果 DEBUG 陷阱執行的命令返回非零值,則跳過並且不執行下一個命令。

所以設置一個 DEBUG 陷阱,如果你檢測到你感興趣的命令,執行$BASH_COMMAND,執行你自己的命令,然後導致原始命令不執行。

編輯

試試這個例子:

#!/bin/bash                                                                                                                                                                                                                                                                     

function myfunc ()
{
   if test "$BASH_COMMAND" = "echo 1"; then
       $BASH_COMMAND
       echo "runing after 'echo 1'"
       return 1
   else
       return 0
   fi
}

shopt -s extdebug
trap "myfunc" DEBUG

echo 1
echo 2

執行此腳本:

$ bash test.sh
1
runing after 'echo 1'
2

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