GNU/Linux >> Linux Esercitazione >  >> Linux

Reindirizzamento dell'output da un blocco funzione a un file in Linux

Il modo che suggerisci è in realtà perfettamente valido. Il manuale di Bash fornisce la sintassi della dichiarazione di funzione come segue (sottolineatura mia):

Le funzioni sono dichiarate usando questa sintassi:

name () compound-command [ redirections ]

o

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

Quindi questo sarebbe perfettamente valido e sostituirebbe il contenuto di outfile con l'argomento di myfunc :

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

Oppure, da aggiungere a outfile :

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

Tuttavia, anche se puoi inserire il nome del tuo file di destinazione in una variabile e reindirizzare a quello, in questo modo:

fname=outfile

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

Penso che sia molto più chiaro eseguire il reindirizzamento in cui chiami la funzione, proprio come raccomandato in altre risposte. Volevo solo farti notare che puoi avere il reindirizzamento come parte della dichiarazione della funzione.

E questo non è un bashismo:le specifiche della shell POSIX consentono anche reindirizzamenti nel comando di definizione della funzione.


Esegui il reindirizzamento quando chiami la funzione.

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

In alternativa, apri una subshell nella funzione e reindirizza l'output della subshell:

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

Puoi usare per exec per il reindirizzamento della shell non sono sicuro che funzionerà per le funzioni

exec > output_file
function initialize {
  ...
}
initialize

Linux
  1. Come salvare l'output dei comandi in un file in Linux

  2. Fare in modo che Ls distingua gli script dai binari in output?

  3. Come creare un file in Linux dalla finestra del terminale?

  4. fopen() è una funzione thread-safe in Linux?

  5. Come scaricare un file dall'URL in Linux

Come creare directory da un file di testo in Linux

Come rimuovere la password da un file PDF in Linux

Come salvare l'output dei comandi di Linux in un'immagine o in un file di testo

Come rimuovere (^M) caratteri da un file in Linux

copiare il file da Windows a Linux

Recupera i valori dal file plist su Linux