GNU/Linux >> Belajar Linux >  >> Linux

Gunakan Ts Tanpa Kehilangan Nilai Keluar?

Pertanyaan ini sudah memiliki jawaban di sini :Dapatkan status keluar dari proses yang disalurkan ke yang lain

(16 jawaban)
Tutup tahun lalu.

Saya memiliki skrip build yang menjalankan perintah panjang yang menghasilkan banyak output seperti ini:

./compile

Untuk memecahkan masalah kinerja kompilasi, saya ingin menggunakan ts (dari moreutils) yang mengawali setiap baris keluaran dengan stempel waktu. Jadi saya memperbarui skrip saya seperti ini:

bash -c "./compile | ts '[%Y-%m-%d %H:%M:%S]'"

Ini berfungsi, tetapi sekarang nilai keluar selalu , peristiwa ketika compile gagal (saya pikir, karena ts keluar tanpa kesalahan).

Bagaimana saya bisa memperbarui skrip saya untuk mengembalikan compile kode keluar saat menggunakan ts ?

Jawaban yang Diterima:

Karena Anda menggunakan Bash, Anda dapat menggunakan $PIPESTATUS yang merupakan larik yang berisi kode keluar yang berbeda dari perintah dalam pipa:

bash -c './compile | ts "[%Y-%m-%d %H:%M:%S]"; exit "${PIPESTATUS[0]}"'

zsh memiliki fitur serupa tetapi menggunakan $pipestatus array sebagai gantinya (ingat juga zsh array diberi nomor dari 1 , bukan ).


Linux
  1. Cara menggunakan dd di Linux tanpa merusak disk Anda

  2. Mengizinkan Pengguna Menggunakan Sudo Tanpa Kata Sandi?

  3. Bagaimana cara keluar dari 'layar' tanpa mengetik 'keluar'?

  1. Bagaimana Anda keluar dari program X11 tanpa Kesalahan

  2. bagaimana cara menggunakan kill SIGUSR2 di bash?

  3. Bagaimana saya bisa menggunakan grep untuk mencocokkan tetapi tanpa mencetak kecocokan?

  1. mengembalikan nilai dari skrip python ke skrip Shell

  2. Gunakan perf di dalam wadah buruh pelabuhan tanpa --privileged

  3. Bagaimana cara meregenerasi 70-persistent-net.rules tanpa reboot?