쉘에서 이 showkey -a 명령을 실행하면 명령이 실행되고 실시간으로 상호 작용할 수 있다는 사실이 조금 혼란스럽습니다.
아래를 참조하세요
timeout 10 /usr/bin/showkey -a
Press any keys - Ctrl-D will terminate this program
t 116 0164 0x74
a 97 0141 0x61
s 115 0163 0x73
d 100 0144 0x64
f 102 0146 0x66
g 103 0147 0x67
j 106 0152 0x6a
f 102 0146 0x66
k 107 0153 0x6b
l 108 0154 0x6c
d 100 0144 0x64
이제 이 명령을 셸 스크립트에 추가하면 출력이 표시되지 않습니다. 즉, 스크립트 또는 스크립트 내부에서 실행되는 명령과 상호 작용할 수 없습니다.
이것은 내 bash 스크립트입니다.
#!/bin/bash
timeout 10 /usr/bin/showkey -a
exit 0
이 스크립트를 실행하면 10초 동안 기다린 후 셸이 종료됩니다. 누른 키, 코드를 표시하고 사용자와 상호 작용하도록 하려면 어떻게 해야 합니까?
제가 이것을 원하는 이유는 키보드 테스트를 수행하기 전에 스크립트가 많은 작업을 수행해야 하고, 키보드 테스트 후에 스크립트가 수행해야 하는 다양한 작업이 있기 때문입니다. 어디에서도 답을 찾을 수 없어서 최후의 수단으로 여기에 질문을 남깁니다. 누군가가 도울 수 있기를 바랍니다.
답변1
이 명령은 showkey
콘솔 장치에서 읽습니다. subshell에서 시작하는 경우 showkey
stdin을 리디렉션해야 합니다.
#!/usr/bin/env bash
/usr/bin/showkey -a </dev/stdin
를 사용하려면 timeout
명령이 showkey
TTY에서 읽고 TTY 신호를 받도록 허용하세요.
#!/usr/bin/env bash
timeout --foreground 10 /usr/bin/showkey -a </dev/stdin