계속하려면 스페이스바를 누르세요

계속하려면 스페이스바를 누르세요

사용자가 누를 때까지 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!

관련 정보