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

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

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

#!/bin/bash

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

function finish() {
  echo "bye."
}

trap finish SIGINT

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

答案1

答案受 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

相关内容