Comment affecter la sortie cat d'un script bash à une variable dans un autre script

30

J'ai un script bash qui produit une sortie cat quand il prend un argument. J'ai également un autre script bash qui exécute le premier script bash avec un argument avec lequel je veux produire des sorties cat. Comment stocker les sorties cat produites par le premier script bash dans des variables?

eltigre
la source

Réponses:

39
var=$( cat foo.txt )

stockerait la sortie de la catvariable in var.

var=$( ./myscript )

stockerait la sortie de myscriptdans la même variable.

Dalker
la source
5
astuce rapide pour les débutants bash comme moi, l'espacement et non l'espacement sont tous importants, suivez le modèle exact! par exemple var = $( cat foo.txt )ne fonctionnera pas
sojim2
@Dalker existe-t-il une limite sur la taille du foo.txt? J'ai plus de 10 Mo de données. Est-ce que le chat stockerait le tout? Je veux savoir s'il y a aussi une limite pour référence future.
myhouse
@sojim Connaissez-vous la réponse à cela?
myhouse
1
@myhouse Selon cette réponse, il n'y a pas de limite en raison de bash lui-même, mais la limite est plutôt la mémoire allouée sur l'environnement sous-jacent, qui peut bien sûr varier.
Dalker
3

Utilisez les guillemets doubles. Essaye ça

var="$(cat foo.txt)"
Konsortium ICT Pantai Timur
la source
3
Ce n'est presque jamais une mauvaise idée de mettre des choses (en particulier des choses qui commencent par $) entre guillemets, et cela ne fait pas de mal ici. Cependant, dans le cas d'une affectation à une variable, cela n'aide pas vraiment.
G-Man dit «Réinstalle Monica»
@ G-Man: Et si cette variable contient des sauts de ligne ou des onglets que nous voulons conserver dans la variable?
jvriesem
@jvriesem: Et si c'était le cas? As-tu une question?
G-Man dit `` Réinstalle Monica ''
Lorsque j'exécute cette commande, elle semble se débarrasser de toutes mes nouvelles lignes.
K. Carpenter