Saya mencoba memiliki program interaktif dalam skrip bash:
my_program
Dan saya berharap dapat menutupnya dengan 'Ctrl + c'. Tetapi ketika saya melakukannya skrip saya juga ditutup.
Saya tahu tentang.
trap '' 2
my_program
trap 2
Tetapi dalam kasus ini, saya tidak bisa menutup my_program
dengan Ctrl + c.
Apakah Anda tahu cara mengizinkan Ctrl + c pada suatu program, tetapi tidak menutup skrip yang menjalankannya?
Sunting: tambahkan contoh
#!/bin/bash
my_program
my_program2
Jika saya menggunakan Ctrl + c untuk menutup my_program
, my_program2
tidak pernah dieksekusi karena seluruh skrip keluar.
tail
dan bukannya membunuh kucing lain kali?Anda dapat mengatur ulang jebakan ke defaultnya dengan memberikan perintah jebakan
-
sebagai argumen aksinya. Jika Anda melakukan ini dalam subkulit , itu tidak akan mempengaruhi jebakan di shell induk. Dalam skrip Anda, Anda bisa melakukan ini untuk setiap perintah yang harus Anda interupsi dengan Ctrl-C:sumber
exec my_program
dalam subkulit, menjadi sedikit lebih efisien.Ketika Anda menggunakan Crtl+ C, Anda menghentikan program (" bunuh " itu).
Apa yang mungkin Anda cari adalah untuk menunda program Anda (" jeda " itu). Untuk ini, Anda dapat menggunakan Crtl+ Z.
Setelah program Anda dijeda, Anda dapat melihatnya menggunakan
jobs
. Sebagai contoh:[1]+ Stopped ./foobar
Di sini saya hanya memiliki satu pekerjaan, pekerjaan # 1, tetapi mungkin ada lebih dari satu - setiap pekerjaan memiliki nomor sendiri.
Anda dapat mengontrol proses yang ditangguhkan menggunakan sejumlah perintah, misalnya
bg
,fg
dankill
.bg %1
akan restart pekerjaan # 1 di b ack g putaranfg %1
akan me-restart pekerjaan # 1 di f bijihg roundkill %1
akan mematikan pekerjaan # 1Perhatikan bahwa Anda dapat menggunakan
bg
danfg
tanpa argumen jika Anda hanya memiliki satu pekerjaan aktif.sumber