Shell-Script
如何檢測正在執行的命令,然後在目前命令之後執行附加命令
我希望 shell 檢測到我已經執行了一個特定的命令,然後在執行該命令後,執行另一個命令。
例如:當我每次執行命令時:
git commit -m " "
首先完成上述命令,然後執行另一個命令,例如:
python check.py
我傾向於修改
.bash_rc
文件。我對嗎 ?提前致謝。
trap
在 bash 中使用命令。陷阱
$$ -lp $$ $$ [arg $$信號規格…] 如果 sigspec 是 DEBUG,則在每個簡單命令之前執行命令 arg …
現在你唯一的問題是你的陷阱命令是在命令之前而不是之後執行的。但是您可以使用 引用要執行的命令
$BASH_COMMAND
,並且可以導致該命令不被執行。擴展調試
- 如果 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