셸 스크립트에서 Ctrl + C를 눌렀을 때 프로세스를 취소하는 방법은 무엇입니까?

매트 코마 니키

일부 작업을 수행하는 스크립트가 있습니다. 적절한 방식으로 수행하지만 끝나기까지 시간이 걸립니다. "작업이 지금 실행 중"이라는 것을 시뮬레이션하고 싶기 때문에 스피너 커서 애니메이션을 추가했습니다.

스크립트 시작 부분에서 호출 한 다음 해당 함수의 PID를 변수에 할당하고 모든 작업이 완료되면 간단히 죽여 애니메이션을 중지합니다.

#!/bin/bash

spinner &
SPINNER_PID=$!

# a lot of stuff going on here...
# takes some time to finish

kill $SPINNER_PID &>/dev/null

printf "All done"

기능 정의 :

spinner() {
  local i sp n
  sp='/-\|'
  n=${#sp}
  while sleep 0.1; do
    printf "%s\b" "${sp:i++%n:1}"
  done
}

내가 방해하지 않으면 모든 것이 잘 작동합니다.

을 호출하여 긴 작업을 취소하고 싶다고 상상해보십시오 Control+C. 취소되지만 스피너는 다른 무한 루프에 주목하기 때문에 분명히 여전히 애니메이션됩니다.

여기에 이미지 설명 입력

스크립트가 수동으로 취소되고 도달하지 않을 때 어떻게 죽일 수 kill $SPINNER_PID &>/dev/null있습니까?

jfdoming

눌렀을 trap때 코드를 실행할 수있는 라는 문이있는 것 같습니다 Ctrl-C. 거기의 좋은 설명은 여기 , 그리고 이 웹 사이트 의 기능을 실행하는 방법을 설명한다 Ctrl-C.

trap your_func INT

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

<ctrl> + <W>를 눌렀을 때 Thunderbird 종료를 비활성화하는 방법은 무엇입니까?

분류에서Dev

wpf c #에서 TAB 키를 눌렀을 때 이벤트를 발생시키는 방법은 무엇입니까?

분류에서Dev

이스케이프를 눌렀을 때 AceGUI 3.0 프레임을 닫는 방법은 무엇입니까?

분류에서Dev

Unity3d, C #에서 키를 눌렀을 때 AnimationClip을 재생하는 방법은 무엇입니까?

분류에서Dev

마우스 1 버튼을 눌렀을 때 감지하고 bash 스크립트를 실행하는 방법은 무엇입니까?

분류에서Dev

Android : 편집 텍스트 소프트 키보드에서 키를 눌렀거나 눌렀을 때를 식별하는 방법이 있습니까?

분류에서Dev

키를 눌렀을 때 bool 변수를 true로 설정하고 다시 눌렀을 때 false로 설정하는 방법은 무엇입니까?

분류에서Dev

선택 구성 요소에서 옵션의 첫 글자를 눌렀을 때 항목 선택을 비활성화하는 방법은 무엇입니까?

분류에서Dev

단축키를 눌렀을 때 쉘에서 스크립트를 실행하는 방법

분류에서Dev

Enter 키를 눌렀을 때 다음 입력 필드로 이동하는 방법은 무엇입니까?

분류에서Dev

Ctrl + Space를 눌렀을 때 포커스가있는 요소를 클릭하지 않습니다.

분류에서Dev

스페이스 바를 눌렀을 때 zsh가 히스토리를 확장하지 못하도록 방지하는 방법은 무엇입니까?

분류에서Dev

스페이스 바를 눌렀을 때 zsh가 히스토리를 확장하지 못하도록 방지하는 방법은 무엇입니까?

분류에서Dev

한 줄로 셸 스크립트를 변환하고 Python 하위 프로세스에서 실행하는 방법은 무엇입니까?

분류에서Dev

키를 눌렀을 때 JavaScript로 비디오를 시작하는 방법은 무엇입니까?

분류에서Dev

as3-두 키를 눌렀을 때 애니메이션을 중지하는 방법은 무엇입니까?

분류에서Dev

마우스를 눌렀을 때 시간을 계산하는 카운터를 만드는 방법은 무엇입니까? 파이 게임

분류에서Dev

Swift-버튼 2 개를 눌렀을 때 한 번의 동작을하는 방법은 무엇입니까?

분류에서Dev

화면 버튼을 눌렀을 때 menuInflator로 메뉴를 여는 방법은 무엇입니까?

분류에서Dev

부모 셸을 종료하지 않고 고아 프로세스를 만드는 방법은 무엇입니까?

분류에서Dev

super를 눌렀을 때 xfce4 whiskermenu를 호출하는 방법은 무엇입니까?

분류에서Dev

정수 배열로 입력을받는 동안 C ++에서 "enter"를 눌렀을 때 루프를 끊는 방법

분류에서Dev

버튼이나 키를 눌렀을 때 AvalonDock의 한 탭에서 다른 탭으로 이동하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트로 버튼을 눌렀을 때 창을 열고 다른 창을 닫는 방법은 무엇입니까?

분류에서Dev

Codebuild에서 여러 셸 스크립트를 병렬로 배포하는 방법은 무엇입니까?

분류에서Dev

flutter로 프로그래밍 된 버튼을 눌렀을 때 파이썬 스크립트를 실행할 수있는 방법이 있습니까?

분류에서Dev

탭하거나 눌렀을 때 버튼 이벤트를 올바르게 구현하고 색상을 변경하는 방법은 무엇입니까?

분류에서Dev

Ctrl + "일부 키"를 눌렀을 때 제어 문자를 사용하여 성가신 OnKeyPress 이벤트 생성을 중지하는 방법이 있습니까?

분류에서Dev

버튼을 눌렀을 때 표시하는 동안 배열에 ID를 저장하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    <ctrl> + <W>를 눌렀을 때 Thunderbird 종료를 비활성화하는 방법은 무엇입니까?

  2. 2

    wpf c #에서 TAB 키를 눌렀을 때 이벤트를 발생시키는 방법은 무엇입니까?

  3. 3

    이스케이프를 눌렀을 때 AceGUI 3.0 프레임을 닫는 방법은 무엇입니까?

  4. 4

    Unity3d, C #에서 키를 눌렀을 때 AnimationClip을 재생하는 방법은 무엇입니까?

  5. 5

    마우스 1 버튼을 눌렀을 때 감지하고 bash 스크립트를 실행하는 방법은 무엇입니까?

  6. 6

    Android : 편집 텍스트 소프트 키보드에서 키를 눌렀거나 눌렀을 때를 식별하는 방법이 있습니까?

  7. 7

    키를 눌렀을 때 bool 변수를 true로 설정하고 다시 눌렀을 때 false로 설정하는 방법은 무엇입니까?

  8. 8

    선택 구성 요소에서 옵션의 첫 글자를 눌렀을 때 항목 선택을 비활성화하는 방법은 무엇입니까?

  9. 9

    단축키를 눌렀을 때 쉘에서 스크립트를 실행하는 방법

  10. 10

    Enter 키를 눌렀을 때 다음 입력 필드로 이동하는 방법은 무엇입니까?

  11. 11

    Ctrl + Space를 눌렀을 때 포커스가있는 요소를 클릭하지 않습니다.

  12. 12

    스페이스 바를 눌렀을 때 zsh가 히스토리를 확장하지 못하도록 방지하는 방법은 무엇입니까?

  13. 13

    스페이스 바를 눌렀을 때 zsh가 히스토리를 확장하지 못하도록 방지하는 방법은 무엇입니까?

  14. 14

    한 줄로 셸 스크립트를 변환하고 Python 하위 프로세스에서 실행하는 방법은 무엇입니까?

  15. 15

    키를 눌렀을 때 JavaScript로 비디오를 시작하는 방법은 무엇입니까?

  16. 16

    as3-두 키를 눌렀을 때 애니메이션을 중지하는 방법은 무엇입니까?

  17. 17

    마우스를 눌렀을 때 시간을 계산하는 카운터를 만드는 방법은 무엇입니까? 파이 게임

  18. 18

    Swift-버튼 2 개를 눌렀을 때 한 번의 동작을하는 방법은 무엇입니까?

  19. 19

    화면 버튼을 눌렀을 때 menuInflator로 메뉴를 여는 방법은 무엇입니까?

  20. 20

    부모 셸을 종료하지 않고 고아 프로세스를 만드는 방법은 무엇입니까?

  21. 21

    super를 눌렀을 때 xfce4 whiskermenu를 호출하는 방법은 무엇입니까?

  22. 22

    정수 배열로 입력을받는 동안 C ++에서 "enter"를 눌렀을 때 루프를 끊는 방법

  23. 23

    버튼이나 키를 눌렀을 때 AvalonDock의 한 탭에서 다른 탭으로 이동하는 방법은 무엇입니까?

  24. 24

    자바 스크립트로 버튼을 눌렀을 때 창을 열고 다른 창을 닫는 방법은 무엇입니까?

  25. 25

    Codebuild에서 여러 셸 스크립트를 병렬로 배포하는 방법은 무엇입니까?

  26. 26

    flutter로 프로그래밍 된 버튼을 눌렀을 때 파이썬 스크립트를 실행할 수있는 방법이 있습니까?

  27. 27

    탭하거나 눌렀을 때 버튼 이벤트를 올바르게 구현하고 색상을 변경하는 방법은 무엇입니까?

  28. 28

    Ctrl + "일부 키"를 눌렀을 때 제어 문자를 사용하여 성가신 OnKeyPress 이벤트 생성을 중지하는 방법이 있습니까?

  29. 29

    버튼을 눌렀을 때 표시하는 동안 배열에 ID를 저장하는 방법은 무엇입니까?

뜨겁다태그

보관