Cómo asignar la salida cat de un script bash a una variable en otro script

29

Tengo un script bash que produce una salida cat cuando toma un argumento. También tengo otro script bash que ejecuta el primer script bash con un argumento con el que quiero producir salidas cat. ¿Cómo almaceno esas salidas cat producidas por el primer script bash en variables?

eltigre
fuente

Respuestas:

38
var=$( cat foo.txt )

almacenaría la salida de la catvariable in var.

var=$( ./myscript )

almacenaría la salida de myscripten la misma variable.

Dalker
fuente
55
consejo rápido para los novatos como yo, el espaciado y el no espaciado son importantes, ¡sigue el patrón exacto! por ejemplo var = $( cat foo.txt )no funcionará
sojim2
@Dalker, ¿hay un límite de cuán grande puede ser el foo.txt? Tengo más de 10 mb de datos. ¿El gato guardaría todo? Quiero saber si hay un límite también para futuras referencias.
myhouse
@sojim ¿Sabes la respuesta de esto?
myhouse
1
@myhouse Según esta respuesta, no hay límite debido a bash en sí, sino que el límite es más bien la memoria asignada en el entorno subyacente, que por supuesto puede variar.
Dalker
3

Usa las comillas dobles. Prueba esto

var="$(cat foo.txt)"
Konsortium ICT Pantai Timur
fuente
3
Casi nunca es una mala idea poner las cosas (especialmente las que comienzan con $) entre comillas dobles, y no hace daño aquí. Sin embargo, en el caso de la asignación a una variable, en realidad no ayuda.
G-Man dice 'Restablecer a Monica'
@ G-Man: ¿Qué pasa si esa variable contiene nuevas líneas o pestañas que queremos mantener en la variable?
jvriesem
@jvriesem: ¿Qué pasa si lo hace? ¿Tienes una pregunta?
G-Man dice 'Restablece a Monica' el
Cuando ejecuto este comando, parece deshacerse de todas mis líneas nuevas.
K. Carpenter