Jak przypisać wyjście cat skryptu bash do zmiennej w innym skrypcie

29

Mam skrypt bash, który generuje wynik cat, gdy wymaga argumentu. Mam również inny skrypt bash, który wykonuje pierwszy skrypt bash z argumentem, z którym chcę wygenerować dane wyjściowe cat. Jak przechowywać dane wyjściowe cat wygenerowane przez pierwszy skrypt bash w zmiennych?

Eltigre
źródło

Odpowiedzi:

38
var=$( cat foo.txt )

przechowuje dane wyjściowe catzmiennej in var.

var=$( ./myscript )

przechowuje dane wyjściowe myscriptw tej samej zmiennej.

Dalker
źródło
5
szybka wskazówka dla początkujących jak bash, odstępy i brak odstępów są ważne, przestrzegaj dokładnego wzoru! na przykład var = $( cat foo.txt )nie zadziała
sojim2
@Dalker jest limit, jak duży może być plik foo.txt? Mam ponad 10 MB danych. Czy kot przechowałby to wszystko? Chcę wiedzieć, czy istnieje limit na przyszłe odniesienia.
myhouse
@ sojim Czy znasz odpowiedź na to pytanie?
myhouse
1
@myhouse Zgodnie z tą odpowiedzią nie ma limitu wynikającego z samego bashu, ale limitem jest raczej pamięć przydzielona w podstawowym środowisku, która może się oczywiście różnić.
Dalker
3

Użyj podwójnych cudzysłowów. Spróbuj tego

var="$(cat foo.txt)"
Konsortium ICT Pantai Timur
źródło
3
Prawie nigdy nie jest złym pomysłem umieszczanie różnych rzeczy (szczególnie tych, które zaczynają się od siebie $) w podwójnych cudzysłowach, i tutaj nie boli. Jednak w przypadku przypisania do zmiennej nie pomaga.
G-Man mówi „Przywróć Monikę”
@ G-Man: Co jeśli ta zmienna zawiera znaki nowej linii lub tabulatory, które chcemy pozostać w zmiennej?
jvriesem
@jvriesem: Co jeśli to zrobi? Masz pytanie?
G-Man mówi „Reinstate Monica”
Po uruchomieniu tego polecenia wydaje się, że pozbywa się wszystkich moich nowych linii.
K. Carpenter