我有以下bash复合命令:
while true ; do slow-command-one ; slow-command-two ; slow-command-three ; done
Run Code Online (Sandbox Code Playgroud)
发生什么了:
我想要发生的事情:
slow-command-two,slow-command-two应该中止,执行应该继续slow-command-three。我怎样才能做到这一点?
您可以trap为此使用命令。抓住SIGINT它,Ctrl+C 不会损害您的命令执行。然后将陷阱重置为默认设置。
这应该有效:
#!/bin/bash
while true; do
slow-command-one;
trap "echo Proceeding to command three" SIGINT;
slow-command-two;
trap - SIGINT;
slow-command-three;
done
Run Code Online (Sandbox Code Playgroud)