Pertanyaan Apa perintah bash yang setara dengan perintah jeda DOS?


Saya perlu jeda pada skrip shell untuk menunjukkan peringatan sebelum melanjutkan. Misalnya, pada DOS itu seperti ini:

doit.bat:

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

Bagaimana saya bisa melakukan ini pada bash? Untuk saat ini perintah tidur tampaknya melakukan trik dan cukup sederhana tetapi tidak persis ide:

doit.sh

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

13
2018-02-27 17:00


asal


Kemungkinan duplikat dari Apa persamaan Linux dengan DOS jeda? - Michael Freidgeim


Jawaban:


sesuatu di sepanjang garis

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

10
2018-02-27 17:08



Di Bash, ini bisa disingkat menjadi read -p "prompt". Detail lebih lanjut tentang shell built-in dapat diambil dengan help perintah, mis. help read. - Lekensteyn
@Lekensteyn - Itu tanpa jalur tambahan baru. - Matt H
@MattH Sama seperti echo -n dan printf. Jika Anda menekan Enter, Anda akan mendapatkan baris baru. - Lekensteyn
yang tidak berfungsi untuk ubuntu 12.04 - baca membutuhkan argumenst - ses
@ses Pada penggunaan 12.04.4 bash tidak ada persyaratan yang dibaca memiliki argumen. Menggunakan sh (yang sering dipanggil bash di sh mode yang kompatibel) read membutuhkan pertengkaran. Jika Anda memulai skrip Anda #!/bin/sh Anda akan melihat perilaku yang terakhir - Huckle


read -p "Press any key to continue or CTRL-C to abort" berfungsi dengan baik di bawah 14.04 dalam skrip saya. Seperti yang ditulis oleh @Lekensteyn dalam komentar di atas tampaknya ini telah terjadi sejak 12.04.4. Halaman 'bantuan membaca' menyatakan:

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

2
2017-11-16 23:09





Penggunaan favorit saya dari ini adalah untuk menetapkan batas waktu default, sehingga skrip juga dapat berjalan tanpa pengawasan:

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

dimana:

  • -n1 memberitahu membaca untuk menerima karakter tunggal
  • -t5 memberitahukannya untuk menunggu maksimal 5 detik untuk input

Saya bekerja hampir secara eksklusif dengan Bash di bawah CentOS, jadi saya tidak bisa menjamin ini bekerja pada varian Linux lainnya, tetapi karena itu Bash, saya akan berharap untuk bekerja. Saya ingin tahu dengan pasti jika memang demikian! :)


1
2017-12-31 09:50





Simples menunggu untuk menghentikan script untuk menelepon kill -STOP $$ dari naskah: Setelah berhenti, skrip akan melanjutkan pekerjaannya setelah menerima sinyal -CONT.

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

0
2017-11-24 11:54



Bagaimana cara mengirim CONT sinyal ke skrip? - David Foerster


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"

tempatkan 3 baris ini dalam file .sh dan jalankan


-2
2017-11-13 18:18



-1 Apa yang harus dilakukan dan mengapa? Mengapa keluaran yang terakhir echo perintah tidak muncul dan apa yang harus dilakukan dengan kecepatan komputer? - David Foerster