Qual è l'equivalente di bash del comando di pausa di DOS?

13

Ho bisogno di una pausa su uno script di shell per mostrare un avvertimento prima di continuare. Ad esempio, su DOS va così:

doit.bat:

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

Come posso fare questo su bash? Per il momento un comando di sonno sembra fare il trucco ed è abbastanza semplice ma non è esattamente l'idea:

doit.sh

[...]
echo 'Are you sure? Press Ctrl-C to abort.'
sleep 3
[...]
    
posta th3pr0ph3t 27.02.2012 - 18:00

5 risposte

10

qualcosa sulla falsariga di

echo -n "prompt"  #'-n' means do not add \n to end of string
read              # No arg means dump next line of input
    
risposta data Huckle 27.02.2012 - 18:08
2

read -p "Press any key to continue or CTRL-C to abort" funziona bene sotto 14.04 nei miei script. Come ha affermato @Lekensteyn nel commento sopra, sembra che sia stato così dal 12.04.4. La pagina 'help read' afferma:

-p prompt   output the string PROMPT without a trailing newline before
            attempting to read
    
risposta data Elder Geek 17.11.2015 - 00:09
1

Il mio utilizzo preferito è impostare un timeout predefinito, in modo che lo script possa anche essere eseguito senza operatore:

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

dove:

  • -n1 dice alla lettura di accettare qualsiasi carattere singolo
  • -t5 dice di attendere un massimo di 5 secondi per l'input

Lavoro quasi esclusivamente con Bash in CentOS, quindi non posso garantire che funzioni su altre varianti di Linux, ma dal momento che è Bash, mi aspetto che funzioni. Mi piacerebbe sapere per certo se lo fa! :)

    
risposta data John Landells 31.12.2015 - 10:50
0

I semplici attendono di interrompere lo script per chiamare kill -STOP $$ dallo script: Dopo la pausa, lo script continuerà a funzionare dopo aver ricevuto il segnale -CONT

#!/bin/bash
echo "$0 stopping now"
kill -STOP $$
echo "$0 continues its work"
    
risposta data ptwolny 24.11.2015 - 12:54
-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"

posiziona queste 3 linee in un file .sh ed eseguilo

    
risposta data Then Enok 13.11.2013 - 19:18

Leggi altre domande sui tag