GNU/Linux >> Belajar Linux >  >> Linux

Bash Loop - Bagaimana cara menghentikan loop ketika saya menekan Control-C di dalam sebuah perintah?

Solusi 1:

for DIR in * ; do rsync -a $DIR example.com:somewhere/ || break; done

Ini juga akan keluar dari loop jika menjalankan rsync individu gagal karena beberapa alasan.

Solusi 2:

Untuk memperluas jawaban Dennis, kode Anda mungkin terlihat seperti:

trap "echo Exited!; exit;" SIGINT SIGTERM

Untuk contoh yang berfungsi (yang melibatkan rsync), lihat http://Gist.github.com/279849.

Solusi 3:

Anda dapat mengatur jebakan untuk Control-C.

trap <command> SIGINT

akan mengeksekusi command saat Control-C ditekan. Masukkan saja trap pernyataan di suatu tempat di skrip Anda pada titik di mana Anda ingin itu menjadi efektif.

Solusi 4:

  1. Tekan Ctrl-Z untuk menangguhkan skrip;
  2. kill %%

Penghargaan, penjelasan, dan detail lainnya dalam jawaban ini.

Solusi 5:

Saat Anda meletakkan string perintah di dalam tanda kurung, string tersebut akan bertindak sebagai proses tunggal, dan akan menerima SIGINT dan berhenti saat Anda menekan Ctrl -C :

(for DIR in * ; do rsync -a $DIR example.com:somewhere/ ; done)

Tetapi! Dalam kasus rsync perintah, ini memungkinkan banyak sumber, sehingga kode yang Anda tulis akan lebih baik ditulis sebagai:

rsync -a * example.com:somewhere/

Linux
  1. Bagaimana Menghentikan Skrip Loop Bash Di Terminal?

  2. Bagaimana Cara Menjadwalkan Perintah Rsync?

  3. Bagaimana cara menggunakan perintah Rsync di linux?

  1. Cara mendapatkan status keluar satu lingkaran di bash

  2. Bagaimana saya bisa mengulang output dari perintah shell?

  3. Bagaimana cara cepat mengubah kata pertama dalam perintah Bash?

  1. Cara menulis loop di Bash

  2. Perintah rsync Linux:cara menggunakannya

  3. SSH - Cara memasukkan perintah -t di file ~/.ssh/config