Perintah bash non-blocking


11

Katakanlah saya memiliki skrip bash dengan yang berikut ini:

#!/bin/sh
gedit
rm *.temp

Ketika saya menjalankannya menggunakan sh ./test.sh, geditmuncul tetapi rmbagian tidak berjalan sampai setelah saya menutup gedit.

Saya ingin skrip terus berjalan walaupun gedittidak ditutup; seperti gedittidak memblokir eksekusi bash.

Contoh yang saya berikan hanyalah contoh (menempatkan yang rmpertama tidak akan berfungsi dalam situasi nyata).

Jawaban:


25

Istilah yang Anda cari disebut "latar belakang" pekerjaan. Saat Anda menjalankan perintah di shell atau skrip, Anda dapat menambahkan bendera di bagian akhir untuk mengirimnya ke latar belakang dan melanjutkan menjalankan perintah baru atau skrip lainnya. Dalam kebanyakan shell termasuk sh, ini adalah &karakternya.

#!/bin/sh
gedit &
rm ./*.temp

Dengan begitu, shell tidak menunggu penghentian geditdan keduanya rmdan geditakan berjalan bersamaan.

Istilah "pemblokiran" biasanya berkaitan dengan aliran input / output, seringkali ke file atau perangkat. Ini juga digunakan dalam bahasa yang dikompilasi dalam sesuatu yang mirip dengan pengertian yang Anda gunakan, tetapi dalam bash dan skrip shell yang serupa, terminologi (dan fungsi!) Agak berbeda.


Terima kasih! itu menjelaskan mengapa saya hanya mendapatkan hasil fifo dan input di google: D
Plante

Kesan saya adalah, bahwa Plante ingin memengaruhi skrip dari luar, untuk melakukan setiap operasi di latar belakang, bukan untuk menulis ulang skrip.
pengguna tidak diketahui

@ Pengguna: Butuh beberapa pasangan membaca untuk menebak apa yang dia inginkan. Mungkin Anda bisa mengomentari pertanyaan untuk klarifikasi.
Caleb

Itulah yang saya butuhkan, terima kasih lagi. bekerja sangat baik sejauh ini!
Plante
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.