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?

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.


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)"

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.