Cara menetapkan keluaran cat skrip bash ke variabel di skrip lain

29

Saya memiliki skrip bash yang menghasilkan keluaran kucing saat dibutuhkan argumen. Saya juga punya skrip bash lain yang mengeksekusi skrip bash pertama dengan argumen yang saya ingin hasilkan dengan cat. Bagaimana cara menyimpan keluaran kucing yang dihasilkan oleh skrip bash pertama dalam variabel?

Eltigre
sumber

Jawaban:

38
var=$( cat foo.txt )

akan menyimpan output dari catvariabel in var.

var=$( ./myscript )

akan menyimpan output myscriptdalam variabel yang sama.

Dalker
sumber
5
tip cepat untuk pemula bash seperti saya, spasi & non spasi semua penting, ikuti pola yang tepat! misalnya var = $( cat foo.txt )tidak akan bekerja
sojim2
@Dalker ada batasan seberapa besar foo.txt bisa? Saya memiliki lebih dari 10 mb data. Apakah kucing akan menyimpan semuanya? Saya ingin tahu apakah ada batasan juga untuk referensi di masa mendatang.
myhouse
@ sojim Apakah Anda tahu jawabannya?
myhouse
1
@ myhouse Menurut jawaban ini tidak ada batas karena bash itu sendiri, tetapi batasnya adalah memori yang dialokasikan pada lingkungan yang mendasarinya, yang tentu saja dapat bervariasi.
Dalker
3

Gunakan tanda kutip ganda. Coba ini

var="$(cat foo.txt)"
Konsortium ICT Pantai Timur
sumber
3
Hampir tidak pernah merupakan ide yang buruk untuk memasukkan hal-hal (terutama hal-hal yang dimulai dengan $) ke dalam tanda kutip ganda, dan tidak ada salahnya di sini. Namun, dalam hal penugasan ke variabel, itu sebenarnya tidak membantu.
G-Man Mengatakan 'Reinstate Monica'
@ G-Man: Bagaimana jika variabel itu berisi baris baru atau tab yang ingin kita tetap dalam variabel?
jvriesem
@ jvriesem: Bagaimana jika itu terjadi? Apakah Anda punya pertanyaan?
G-Man Mengatakan 'Reinstate Monica'
Ketika saya menjalankan perintah ini, sepertinya menyingkirkan semua baris baru saya.
K. Carpenter