Como atribuir a saída cat de um script bash a uma variável em outro script

29

Eu tenho um script bash que produz uma saída de gato quando leva um argumento. Eu também tenho outro script bash que executa o primeiro script bash com um argumento com o qual eu quero produzir saídas de gato. Como armazenar essas saídas cat produzidas pelo primeiro script bash em variáveis?

eltigre
fonte

Respostas:

38
var=$( cat foo.txt )

armazenaria a saída da catvariável in var.

var=$( ./myscript )

armazenaria a saída de myscriptna mesma variável.

Dalker
fonte
5
dica rápida para iniciantes do bash como eu, o espaçamento e o não espaçamento são importantes, siga o padrão exato! por exemplo var = $( cat foo.txt ), não vai funcionar
sojim2 17/02
@Dalker is there a limit how big the foo.txt can be? I have over 10 mb of data. Would cat store the whole thing? I want to know if there's a limit also for future reference.
myhouse
@sojim Você sabe a resposta disso?
myhouse
1
@myhouse De acordo com esta resposta, não há limite devido ao próprio bash, mas o limite é mais a memória alocada no ambiente subjacente, que pode, é claro, variar.
Dalker 18/07
3

Use aspas duplas. Tente isto

var="$(cat foo.txt)"
Konsortium ICT Pantai Timur
fonte
3
Quase nunca é uma má idéia colocar coisas (especialmente as que começam com $) entre aspas duplas, e isso não dói aqui. No entanto, no caso de atribuição a uma variável, isso realmente não ajuda.
G-Man diz 'Reinstate Monica'
@ G-Man: E se essa variável contiver novas linhas ou guias que queremos permanecer na variável?
jvriesem 7/03
@jvriesem: E se acontecer? Você tem uma pergunta?
G-Man diz 'Reinstate Monica' em
Quando executo esse comando, ele parece se livrar de todas as minhas novas linhas.
K. Carpenter