사용자가 누를 때까지 bash 스크립트를 중지하는 방법은 무엇입니까 Space?
내 스크립트에서 이 질문을 하고 싶습니다.
계속하려면 스페이스바를 누르고 종료하려면 CTRL+를 누르세요.C
그러면 스크립트가 중지되고 스페이스바를 누를 때까지 기다려야 합니다.
답변1
당신은 그것을 사용할 수 있습니다 read
:
read -n1 -s -r -p $'Press space to continue...\n' key
if [ "$key" = ' ' ]; then
# Space pressed, do something
# echo [$key] is empty when SPACE is pressed # uncomment to trace
else
# Anything else pressed, do whatever else.
# echo [$key] not empty
fi
' '
위의 공백을 ''
Enter 키와 $'\t'
Tab 키로 바꿉니다.
답변2
pause
이 SO Q&A에서 논의된 방법은 아마도 Windows에서 BAT 파일을 처리할 때 익숙한 동작에 대한 가장 좋은 대안일 것입니다.
$ read -rsp $'Press any key to continue...\n' -n1 key
예
여기서는 위의 코드를 실행한 다음 아무 키나 누르십시오. 이 경우에는 해당 D키를 누르십시오.
$ read -rsp $'Press any key to continue...\n' -n1 key
Press any key to continue...
$
인용하다
답변3
pause
스크립트의 어느 곳에서나 사용할 수 있는 함수를 생성할 수 있습니다 . 예를 들면 다음과 같습니다.
#!/bin/bash
pause(){
while read -r -t 0.001; do :; done # dump the buffer
read -n1 -rsp $'Press any key to continue or Ctrl+C to exit...\n'
}
echo "try to press any key before the pause, it won't work..."
sleep 5
pause
echo "done"
답변4
터미널에서 I/O를 사용 bash
하고 보장하는 방법은 다음과 같습니다 .zsh
# Prompt for a keypress to continue. Customise prompt with $*
function pause {
>/dev/tty printf '%s' "${*:-Press any key to continue... }"
[[ $ZSH_VERSION ]] && read -krs # Use -u0 to read from STDIN
[[ $BASH_VERSION ]] && </dev/tty read -rsn1
printf '\n'
}
export_function pause
당신의 위대한 정의를 실현하십시오 .{ba,z}shrc
!