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?

Odpowiedzi:


38
var=$( cat foo.txt )

przechowuje dane wyjściowe catzmiennej in var.

var=$( ./myscript )

przechowuje dane wyjściowe myscriptw tej samej zmiennej.


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.