Come assegnare l'output cat di uno script bash a una variabile in un altro script


29

Ho uno script bash che produce un output cat quando prende una discussione. Ho anche un altro script bash che esegue il primo script bash con un argomento con cui voglio produrre output cat. Come posso archiviare le uscite cat prodotte dal primo script bash in variabili?

Risposte:


38
var=$( cat foo.txt )

memorizzerebbe l'output della catvariabile in var.

var=$( ./myscript )

memorizzerebbe l'output di myscriptnella stessa variabile.


5
suggerimento rapido per i principianti bash come me, la spaziatura e la non spaziatura sono tutti importanti, segui il modello esatto! per esempio var = $( cat foo.txt )non funzionerà
sojim2

@Dalker c'è un limite quanto può essere grande il foo.txt? Ho oltre 10 MB di dati. Il gatto immagazzinerebbe tutto? Voglio sapere se esiste un limite anche per riferimenti futuri.
myhouse,

@sojim Conosci la risposta di questo?
myhouse,

1
@myhouse Secondo questa risposta non c'è limite a bash stesso, ma il limite è piuttosto la memoria allocata sull'ambiente sottostante, che ovviamente può variare.
Dalker,

3

Usa le doppie virgolette. Prova questo

var="$(cat foo.txt)"

3
Non è quasi mai una cattiva idea mettere le cose (specialmente quelle che iniziano con $) tra virgolette doppie, e non fa male qui. Tuttavia, nel caso di assegnazione a una variabile, in realtà non aiuta.
G-Man dice "Reinstate Monica"

@ G-Man: cosa succede se quella variabile contiene newline o tab che vogliamo rimanere nella variabile?
jvriesem

@jvriesem: cosa succede se lo fa? Hai una domanda?
G-Man dice "Reinstate Monica" l'

Quando eseguo questo comando, sembra sbarazzarsi di tutte le mie nuove righe.
K. Carpenter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.