Saya memiliki skrip Bash yang menjalankan program dengan parameter. Program itu mengeluarkan beberapa status (melakukan ini, melakukan itu ...). Tidak ada pilihan untuk program ini menjadi tenang. Bagaimana saya bisa mencegah skrip menampilkan sesuatu?
Saya mencari sesuatu seperti Windows ' "echo off" .
echo foo > $(tty)
skrip dan jalankan./test.sh &> /dev/null
- Output masih dicetak ke terminal. Tentu saja ini bukan masalah jika Anda sedang menulis skrip yang tidak menggunakan perintah seperti itu./dev/null
ada di Cygwin, Anda tidak perlu menggunakannul
.Sesuatu seperti
Ini akan mencegah output standar dan output kesalahan, mengarahkan keduanya ke
/dev/null
.sumber
2>/dev/null
Mencoba
:
kependekan dari "do nothing".$()
hanya perintahmu.sumber
0
(sukses). Mari kita lihat contoh menggunakan perintahfalse
yang selalu kembali1
(gagal). Misalnya( echo foo | tee file ; false ) && echo bar
menampilkanfoo
. Menggunakan trik Anda untuk menekan output:( : $(echo foo | tee file ; false) ) && echo bar
. Tapi ini menampilkanbar
artinya kode status pengembalian0
(ini bukan kode status yang dikembalikan darifalse
). Harap perbarui jawaban Anda dengan memberikan batasan ini. CheersDUMMY=$(yourcommand)
? Itu tidak memiliki batasan yang telah Anda sebutkan. :)DUMMY=$( echo foo | tee file ; false ) && echo bar
tidak menampilkan apa pun. Dan perintahnyaDUMMY=$( echo foo | tee file ; true ) && echo bar
ditampilkanbar
. Beri tahu saya jika Anda memberikan jawaban untuk meningkatkannya ;-) CheersAlternatif yang mungkin cocok dalam beberapa situasi adalah dengan menetapkan hasil perintah ke variabel:
Karena Bash dan penerjemah baris perintah POSIX lainnya tidak menganggap penugasan variabel sebagai perintah, kode pengembalian perintah ini dihormati.
Catatan: penetapan dengan
typeset
ataudeclare
kata kunci dianggap sebagai perintah, jadi kode pengembalian yang dievaluasi dalam kasus adalah penetapan itu sendiri dan bukan perintah yang dijalankan di sub-shell:sumber
Suka posting andynormancx , gunakan ini (jika Anda bekerja di lingkungan Unix):
Atau Anda dapat menggunakan ini (jika Anda bekerja di lingkungan Windows):
sumber
> nul
Windows dengan cygwin atau git bash dan sekarang Anda terjebak dengannul
file yang tidak dapat dihapus, tolong coba jawaban ini , itu berfungsi seperti pesona.Lihatlah contoh ini dari Proyek Dokumentasi Linux :
Yang mengatakan, Anda dapat menggunakan pengalihan sederhana ini:
sumber
Dalam skrip Anda, Anda dapat menambahkan yang berikut ke baris yang Anda tahu akan memberikan hasil:
Atau Anda juga bisa mencoba
sumber
>>
)?