无法在我的 bash 脚本中捕获 (Ctrl^C)

whi*_*edb 7 bash

我不知道为什么我不能在这个简单的脚本中捕获 Ctrl^C。

#!/bin/bash

for number in $(seq 10); do
  echo -n "."
  sleep 2
done

function finish() {
  echo "bye."
}

trap finish SIGINT
Run Code Online (Sandbox Code Playgroud)

我尝试使用INT而不是SIGINT,但没有成功。

Kaz*_*lfe 9

受 OP 编辑​​启发的答案。请不要杀我...


脚本中的顺序非常重要。首先,您需要将功能放在首位。您还需要将陷阱放在循环之前。这样的事情应该运作良好:

#!/bin/bash

function finish() {
        echo "bye bye!"
}

trap finish SIGINT

for number in $(seq 10); do
        echo "TODO: Insert work here..."
        # Insert work to do here.
done
Run Code Online (Sandbox Code Playgroud)