DOS'un pause komutunun bash eşdeğeri nedir?


13

Devam etmeden önce bir uyarı göstermek için kabuk komut dosyasında bir duraklamaya ihtiyacım var. Örneğin, DOS'ta şu şekilde gider:

doit.bat:

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

Bunu bash üzerinde nasıl yapabilirim? Şimdilik bir uyku komutu hile yapıyor gibi görünüyor ve yeterince basit ama tam olarak fikir değil:

doit.sh

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

Yanıtlar:


10

çizgisinde bir şey

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

14
Bash'te bu kısaltılabilir read -p "prompt". Kabuk yerleşikleri hakkında daha fazla ayrıntı help, örn help read.
Lekensteyn

@Lekensteyn - Bu sondaki satırsonu olmadan.
Matt H

@MattH Tıpkı echo -nve gibi printf. Enter tuşuna basarsanız, yeni bir satır alırsınız.
Lekensteyn

ubuntu 12.04 için çalışmaz - okuma argumenst gerektirir
ses

@ 12.04.4 kullanıldığında bashokumanın bağımsız değişken olması gerekmez. Kullanımı sh(genellikle çağırır ki bashiçinde shuyumlu modu) readbir bağımsız değişken gerektirir. Senaryonuzu başlatırsanız #!/bin/sh, ikinci davranışı görürsünüz
Huckle

2

read -p "Press any key to continue or CTRL-C to abort"benim script 14.04 altında iyi çalışıyor. @Lekensteyn'in yukarıdaki yorumda belirttiği gibi, 12.04.4'ten beri durum böyle görünüyor. 'Yardım okunuyor' sayfasında şunlar bulunur:

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

1

Bunu en sevdiğim kullanımı, komut dosyasının katılımsız çalışabilmesi için varsayılan bir zaman aşımı ayarlamaktır:

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

nerede:

  • -n1 okumaya herhangi bir karakteri kabul etmesini söyler
  • -t5 giriş için en fazla 5 saniye beklemesini söyler

Neredeyse tamamen CentOS altında Bash ile çalışıyorum, bu yüzden diğer Linux varyantlarında çalıştığını garanti edemiyorum, ancak Bash olduğu için çalışmasını bekleyebilirim. Kesinlikle bilmek isterdim! :)


0

Basit komut dosyası durdurmak için komut dosyasından çağrı beklemektedir kill -STOP $$: Duraklatıldıktan sonra komut dosyası -CONT sinyali aldıktan sonra çalışmaya devam edecektir.

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

CONTSinyali senaryoya nasıl gönderir ?
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"

bu 3 satırı bir .sh dosyasına yerleştirin ve çalıştırın


1
-1 Bu ne yapmalı ve neden? Son echokomutun çıktısı neden görünmüyor ve bilgisayarın hızı ile ne ilgisi var?
David Foerster
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.