GNU/Linux >> Tutoriales Linux >  >> Linux

Redirigir la salida de un bloque de funciones a un archivo en Linux

La forma en que sugieres es perfectamente válida. El manual de Bash proporciona la sintaxis de declaración de función de la siguiente manera (énfasis mío):

Las funciones se declaran usando esta sintaxis:

name () compound-command [ redirections ]

o

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

Entonces esto sería perfectamente válido y reemplazaría el contenido de outfile con el argumento de myfunc :

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

O, para agregar a outfile :

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

Sin embargo, aunque puede poner el nombre de su archivo de destino en una variable y redirigir a eso, así:

fname=outfile

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

Creo que es mucho más claro hacer la redirección donde llamas a la función, tal como se recomienda en otras respuestas. Solo quería señalar que usted puede tener la redirección como parte de la declaración de la función.

Y esto no es un bashism:la especificación POSIX Shell también permite redirecciones en el comando de definición de funciones.


Realice la redirección cuando llame a la función.

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

Alternativamente, abra una subcapa en la función y redirija la salida de la subcapa:

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

Puedes usar para exec para la redirección de shell, no estoy seguro de si funcionará para las funciones

exec > output_file
function initialize {
  ...
}
initialize

Linux
  1. Cómo redirigir la salida a un archivo y salida estándar en Linux

  2. Ejecutando un comando de linux desde python

  3. ¿Es fopen () una función segura para subprocesos en Linux?

  4. ¿Cómo imprimir la salida del comando Linux en un archivo?

  5. pscp copia el archivo de forma remota desde Windows a Linux

Lea y escriba datos desde cualquier lugar con redirección en la terminal de Linux

Cómo crear directorios desde un archivo de texto en Linux

Cómo quitar la contraseña de un archivo PDF en Linux

Cómo guardar la salida del comando de Linux en una imagen o un archivo de texto

Cómo quitar (^M) caracteres de un archivo en Linux

Cómo descargar un archivo desde URL en Linux