Bash 스크립트는 지연 후 명령을 실행합니다.

Bash 스크립트는 지연 후 명령을 실행합니다.

단축키에 바인딩하여 난수 문자열을 입력하는 스크립트를 만들었습니다.

#!/bin/bash

ran="$(shuf -i 100000-999999 -n 1)"

sleep .2

xdotool type --delay 12 "untitled_$ran "

어떤 이유로 이 xdotool명령은 처음 10분의 1초 정도 동안 아무 작업도 수행하지 않습니다. 그렇지 않은 경우 sleep아무것도 입력하지 마세요. sleep명령이 더 짧으면 6자 미만으로 입력하십시오 . 이는 명령이 실행 중이지만 스크립트가 실행된 후 처음 몇 분 동안은 무시되는 것과 같습니다.

왜 이런 일이 일어나는가?이 문제를 어떻게 해결할 수 있나요?

답변1

귀하는 귀하의 의견에서 이 스크립트를 실행하기 위해 일종의 단축키를 사용하고 있다고 말했습니다. 무슨 일이 일어나고 있는지 확실히 알 수는 없지만 키보드 포커스가 움직이는 것이 의심되며 xdotool지체없이 실행하면 포커스가 의도한 터미널이 아닙니다. 이 가설을 테스트하려면 다음 접근 방식을 권장합니다.

  • xev터미널에서 시작하세요.
  • 터미널이 보이도록 유지하면서 창에 초점을 맞춥니다 xev(창 안으로 마우스를 이동하는 등).
  • 단축키를 누르세요.
  • 이벤트를 모니터링 FocusOut하고 기록합니다 . 이런 일이 발생하면 열쇠가 사라진 이유를 설명할 수 있습니다.FocusInxevxev
  • KeyPress이벤트는 KeyRelease귀하가 해당 작업을 수행하고 있음을 보여주어야 합니다 xdotool.

가정이 정확하다면 이를 수정하는 방법에 대해서는 포커스 변경을 일으키지 않는 방식으로 단축키를 활성화해야 합니다. 나는 전혀 모른다 ...

관련 정보