我在我的 bash 环境中内置了一个复杂的机制,它需要在生成提示时执行几个脚本,而且当用户按 Enter 开始处理命令时也需要执行。我将给出一个过于简单的描述:
调试陷阱以相当有限的方式执行此操作:每次执行语句时都会触发。
trap 'echo $BASH_COMMAND' DEBUG # example
不幸的是,这意味着当我输入以下内容时:
sleep 1; sleep 2; sleep 3
我没有处理$BASH_COMMAND
包含整行的 a ,而是在三个不同的陷阱中获得了三个睡眠。更糟糕的是:
sleep 1 | sleep 2 | sleep 3
在设置管道时触发所有三个 - 在sleep 1
开始执行之前,输出可能会让您相信 sleep 3 正在运行。
我需要一种从一开始就执行脚本的方法,处理整个命令,并且我希望它在运行提示命令时不触发,但如果必须,我可以处理。