2011-01-20 12 views

Respuesta

28

en varias de un millón de maneras ...

más sencilla es probablemente

my_var=$(cat my_file) 

Si utiliza bash y desea obtener spiffy puede utilizar archivo de asignaciones de bash4, lo que pone un archivo completo en una variable de matriz, una línea por cada célula

mapfile my_var < my_file 
+0

¿Desde cuándo está espaciado antes y después de '=' permitido en el shell scripting? – orlp

+0

@nightcracker lo siento, brainfart, ya lo había corregido antes de ver tu comentario – wich

+0

newlines hará que la primera parte intente ejecutar y falle con un comando no encontrado error use var = $ (cat archivo | tr -d '\ n') para eliminar todas las líneas nuevas, incluidas las posteriores – Jonathan

2
var="`cat /path/to/file`" 

Esta es la manera más simple. Tenga cuidado con las nuevas líneas en el archivo.

var="`head -1 /path/to/file`" 

Esto solo aparecerá en la primera línea y nunca incluirá una nueva línea.

+0

Tengo un archivo nammed "log", y '$ x =" \ 'cat log \' "' da como resultado '= 2: comando no encontrado' –

+0

eliminado el' $ 'oops .. – Puddingfox

+1

ew, backticks. .. – wich

0

Creo que va a despojar a los saltos de línea, pero aquí está de todos modos:

variable=$(cat filename) 
+2

Solo tirará la nueva línea final. Si parece que le están quitando las otras líneas nuevas, es porque no está citando la variable en la salida. 'echo $ variable' contra' echo "$ variable" ' –

+0

@Dennis: eso es todo. – orlp

0

Creo que la forma más fácil es algo así como

$ export myvar = `cat file` 
+4

No es necesario exportar la variable y los espacios alrededor del signo igual no funcionarán. –

25

Bueno, más sencilla es probablemente

var=$(< file) 

que no crea un nuevo proceso.

+0

+1 para ningún proceso nuevo – Puddingfox

+0

y otro +1 para ningún proceso nuevo – orlp

+1

Esto parece cerrarse en la primera nueva línea que encuentra. – orlp

Cuestiones relacionadas