DOS의 pause 명령과 동일한 bash는 무엇입니까?


13

계속하기 전에 경고를 표시하려면 셸 스크립트에서 일시 중지해야합니다. 예를 들어 DOS에서는 다음과 같이 진행됩니다.

doit.bat :

[...]
echo 'Are you sure? Press Ctrl-C to abort, enter to continue.'
pause
[...]

bash에서 어떻게 할 수 있습니까? 현재 잠자기 명령은 트릭을 수행하는 것처럼 보이고 간단하지만 아이디어는 아닙니다.

doit.sh

[...]
echo 'Are you sure? Press Ctrl-C to abort.'
sleep 3
[...]

답변:


10

라인을 따라 뭔가

echo -n "prompt"  #'-n' means do not add \n to end of string
read              # No arg means dump next line of input

14
Bash에서는 이것을으로 단축 할 수 있습니다 read -p "prompt". 쉘 내장에 대한 자세한 내용은 help예를 들어 다음 명령을 사용하여 검색 할 수 있습니다 help read.
Lekensteyn

@Lekensteyn-그 뒤에 줄 바꿈이 없습니다.
Matt H

@MattH echo -nand 처럼 printf. Enter 키를 누르면 줄 바꿈이 나타납니다.
Lekensteyn

읽기 argumenst 필요 - 즉, 12.04 우분투 작동하지 않습니다
SES

@ses 12.04.4 bash에서는 읽기에 인수가 필요하지 않습니다. 사용 sh(자주 호출하는 bash으로 sh호환 모드은) read인수가 필요합니다. 스크립트를 시작 #!/bin/sh하면 후자의 동작을 볼 수 있습니다
Huckle

2

read -p "Press any key to continue or CTRL-C to abort"내 스크립트에서 14.04에서 잘 작동합니다. @Lekensteyn이 위의 의견에서 언급했듯이 이것은 12.04.4 이후에 발생한 것으로 보입니다. '도움말 읽기'페이지에는 다음이 표시됩니다.

-p prompt   output the string PROMPT without a trailing newline before
            attempting to read

1

내가 가장 좋아하는 사용법은 기본 시간 초과를 설정하여 스크립트를 무인으로 실행할 수도 있다는 것입니다.

echo "Press any key to continue..."
read -n1 -t5 any_key

어디:

  • -n1 읽기에 단일 문자를 허용하도록 지시합니다.
  • -t5 입력을 위해 최대 5 초 동안 기다리도록 지시합니다.

CentOS에서 Bash와 거의 독점적으로 작업하므로 다른 Linux 변형 에서이 작업을 보증 할 수는 없지만 Bash이므로 작동 할 것으로 기대합니다. 나는 확실히 알고 싶습니다! :)


0

스크립트를 중지하기 위해 대기하는 kill -STOP $$간단한 방법은 스크립트에서 호출 하는 것입니다. 일시 중지 된 후 스크립트는 -CONT 신호를 수신 한 후 작업을 계속합니다.

#!/bin/bash
echo "$0 stopping now"
kill -STOP $$
echo "$0 continues its work"

CONT신호를 스크립트에 어떻게 보내 나요?
David Foerster

-2
echo "press enter to continue"
read unusedVariable
echo "running these 3 lines in .sh file, this echo will never be seen, unless you have a really slow computer"

이 세 줄을 .sh 파일에 넣고 실행하십시오.


1
-1 무엇을해야하며 왜해야합니까? 마지막 echo명령 의 출력이 표시되지 않는 이유는 무엇이며 컴퓨터 속도와 어떤 관련이 있습니까?
David Foerster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.