Saya perlu jeda pada skrip shell untuk menampilkan peringatan sebelum melanjutkan. Sebagai contoh, pada DOS seperti ini:
doit.bat:
[...]
echo 'Are you sure? Press Ctrl-C to abort, enter to continue.'
pause
[...]
Bagaimana saya bisa melakukan ini di 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
[...]
Jawaban:
sesuatu di sepanjang garis
sumber
read -p "prompt"
. Rincian lebih lanjut tentang built-in shell dapat diambil denganhelp
perintah, misalnyahelp read
.echo -n
danprintf
. Jika Anda menekan Enter, Anda akan mendapatkan baris baru.bash
tidak ada persyaratan bahwa membaca memiliki argumen. Menggunakansh
(yang sering dipanggilbash
dalamsh
mode yang kompatibel)read
membutuhkan argumen. Jika Anda memulai skrip dengan#!/bin/sh
Anda, Anda akan melihat perilaku yang terakhirread -p "Press any key to continue or CTRL-C to abort"
berfungsi dengan baik di bawah 14,04 dalam skrip saya. Sebagai @Lekensteyn dinyatakan dalam komentar di atas tampaknya ini telah menjadi kasus sejak 12.04.4. Halaman 'help read' menyatakan:sumber
Penggunaan favorit saya adalah mengatur batas waktu default, sehingga skrip juga dapat berjalan tanpa pengawasan:
dimana:
-n1
memberitahu baca untuk menerima karakter tunggal-t5
memintanya untuk menunggu maksimal 5 detik untuk inputSaya bekerja hampir secara eksklusif dengan Bash di bawah CentOS, jadi saya tidak dapat menjamin ini bekerja pada varian Linux lainnya, tetapi karena itu Bash, saya berharap itu bekerja. Saya ingin tahu pasti jika itu terjadi! :)
sumber
Simples menunggu untuk menghentikan skrip adalah untuk memanggil
kill -STOP $$
dari skrip: Setelah jeda skrip akan melanjutkan kerjanya setelah menerima sinyal -CONT.sumber
CONT
sinyal ke skrip?letakkan 3 baris ini dalam file .sh dan jalankan
sumber
echo
perintah terakhir tidak muncul dan apa hubungannya dengan kecepatan komputer?