GNU/Linux >> Belajar Linux >  >> Linux

Mengarahkan output dari blok fungsi ke file di Linux

Cara Anda menyarankan sebenarnya sangat valid. Manual Bash memberikan sintaks deklarasi fungsi sebagai berikut (penekanan milik saya):

Fungsi dideklarasikan menggunakan sintaks ini:

name () compound-command [ redirections ]

atau

function name [()] compound-command [ redirections ]

Jadi ini akan benar-benar valid dan mengganti konten outfile dengan argumen ke myfunc :

myfunc() {
    printf '%s\n' "$1"
} > outfile

Atau, untuk menambahkan outfile :

myappendfunc() {
    printf '%s\n' "$1"
} >> outfile

Namun, meskipun Anda dapat memasukkan nama file target Anda ke dalam variabel dan mengarahkan ulang ke sana, seperti ini:

fname=outfile

myfunc() { printf '%s\n' "$1"; } > "$fname"

Saya pikir jauh lebih jelas untuk melakukan pengalihan di mana Anda memanggil fungsi - seperti yang direkomendasikan di jawaban lain. Saya hanya ingin menunjukkan bahwa Anda bisa memiliki pengalihan sebagai bagian dari deklarasi fungsi.

Dan ini bukan bashism:spesifikasi POSIX Shell juga memungkinkan pengalihan dalam perintah definisi fungsi.


Lakukan pengalihan saat Anda memanggil fungsi tersebut.

#!/bin/bash
initialize() {
  echo 'initializing'
  ...
}
#call the function with the redirection you want
initialize >> your_file.log

Atau, buka subkulit dalam fungsi dan alihkan keluaran subkulit:

#!/bin/bash
initialize() {
  (  # opening the subshell
    echo 'initializing'
    ...
  # closing and redirecting the subshell
  ) >> your_file.log
}
# call the function normally
initialize

Anda dapat menggunakan untuk exec untuk pengalihan shell tidak yakin apakah itu akan berfungsi untuk fungsi

exec > output_file
function initialize {
  ...
}
initialize

Linux
  1. Linux – Kolom Buffer Di Keluaran Dari Gratis?

  2. Jadikan Ls Bedakan Script Dari Biner Di Output?

  3. Cara memblokir pengguna non-root dari membuat entri crontab di Linux

  1. Menjalankan perintah linux dari python

  2. Apakah fopen() fungsi thread safe di Linux?

  3. Bagaimana cara mencetak keluaran perintah Linux ke file?

  1. salin file pscp dari jarak jauh dari Windows ke Linux

  2. Cara mengunduh file dari URL di Linux

  3. Ambil nilai dari file plist di Linux