GNU/Linux >> Belajar Linux >  >> Linux

Redirect output dari perintah waktu di unix ke dalam variabel di bash?

Solusi 1:

X=`(waktu ls) 2>&1 | grep nyata`

Solusi 2:

Lihat BashFAQ/032.

$ # captures output of command and time
$ time=$( TIMEFORMAT="%R"; { time ls; } 2>&1 )    # note the curly braces

$ # captures the time only, passes stdout through
$ exec 3>&1 4>&2
$ time=$(TIMEFORMAT="%R"; { time ls 1>&3 2>&4; } 2>&1)
bar baz
$ exec 3>&- 4>&-

Waktu akan terlihat seperti "0,000" menggunakan TIMEFORMAT="%R" yang akan menjadi waktu "nyata".

Solusi 3:

Waktu menulis hasilnya ke STDERR daripada STDOUT. Lebih buruk lagi, secara default 'time' adalah perintah bawaan shell, jadi jika Anda mencoba 'time ls 2>&1', '2>&1' hanya berlaku untuk 'ls'.

Solusinya mungkin seperti:

/usr/bin/time -f 'real %e' -o OUTPUT_FILE ls > /dev/null 2>&1<br>
REALTIME=$(cat OUTPUT_FILE | cut -f 2 -d ' ')

Ada cara yang lebih mewah untuk melakukannya, tetapi itu adalah cara yang jelas/sederhana.


Linux
  1. Mengapa Mengatur Variabel Sebelum Perintah Legal Di Bash?

  2. Perintah Rm Dalam Skrip Bash Tidak Bekerja Dengan Variabel?

  3. Contoh Perintah Waktu Linux

  1. Secara otomatis menangkap keluaran dari perintah terakhir ke dalam variabel menggunakan Bash?

  2. Redirect semua output ke file di Bash

  3. Bagaimana cara mengarahkan output dari perintah waktu ke file di Linux?

  1. Cara Menetapkan Output dari Perintah Linux ke Variabel

  2. Output perintah dialihkan ke file dan terminal

  3. Bash menangkap output dari awk ke dalam array