Saya sedang menyelidiki perilaku skrip yang biasanya dijalankan sebagai proses otomatis (misalnya cron, Jenkins). Script dapat (akhirnya) menjalankan perintah yang berperilaku berbeda (mencari input pengguna) ketika dijalankan secara interaktif; misalnya, patch
akan bertanya apa yang harus dilakukan dengan tambalan yang dibalik, dan svn
akan meminta kata sandi, tetapi saya perlu melihat apa yang terjadi ketika mereka dijalankan secara non-interaktif.
Membujuk patch
bahwa itu non-interaktif cukup mudah; Saya hanya perlu mengarahkan ulang stdout
menjadi non-tty:
$ </dev/null > >(cat) /path/to/myscript --args
Namun svn
akan terhubung ke terminal pengendali jika ada; mengedit skrip untuk dilewati --non-interactive
bukan pilihan karena ini berasal dari beberapa level dan akan sulit untuk memastikan bahwa saya telah menemukan setiap doa.
Apakah ada cara untuk memanggil skrip / perintah secara non-interaktif, tanpa terminal pengendali (sehingga /dev/tty
tidak ada)? Saya lebih suka stdout / stderr untuk tetap pergi ke terminal saya.
(Saya menemukan pertanyaan Jalankan skrip di shell non-interaktif? Tetapi jawaban untuk itu membahas perbedaan antara cron dan lingkungan pengguna; Saya sudah menghilangkan semua perbedaan kecuali non-interaktivitas.)