Bir bash betiğinin cat çıktısını başka bir betiğin içindeki bir değişkene atamak


29

Bir argüman aldığında bir kedi çıktısı üreten bir bash betiğim var. Ayrıca, ilk bash betiğini, kedi çıktıları üretmek istediğim bir argümanla yürüten başka bir bash betiğim de var. Birinci bash betiği tarafından üretilen kedi çıktılarını değişkenlerde nasıl saklarım?

Yanıtlar:


38
var=$( cat foo.txt )

catin değişkeninin çıktısını depolardı var.

var=$( ./myscript )

çıktısını myscriptaynı değişkende saklardı.


5
Benim gibi bash yeni başlayanlar için kısa ipucu, boşluk bırakma ve boşluk bırakmama önemli, tam kalıbı takip edin! örneğin var = $( cat foo.txt )işe yaramayacak
sojim2

@Dalker foo.txt dosyasının ne kadar büyük olabileceğinin bir sınırı var mı? 10 mb'den fazla veri var. Kedi her şeyi saklar mı? Gelecekte referans olması için de bir sınır olup olmadığını bilmek istiyorum.
evim

@sojim Bunun cevabını biliyor musunuz?
evim

1
@ myhouse Bu cevaba göre bash'ın kendisinden dolayı bir sınır yoktur, fakat sınır, tabii ki değişebilen, altta yatan ortama tahsis edilen hafızadır.
Dalker

3

Çift tırnak kullanın. Bunu dene

var="$(cat foo.txt)"

3
Bir şeyleri (özellikle başlayan şeyleri $) çift tırnak içine almak neredeyse hiçbir zaman kötü bir fikir değildir ve burada zarar vermez. Bununla birlikte, bir değişkene atanması durumunda, aslında yardımcı olmuyor.
G-Man

@ G-Man: Bu değişken değişkende kalmak istediğimiz yeni satırları veya sekmeleri içeriyorsa ne olur?
jvriesem

@jvriesem: Ya yaparsa? Bir sorunuz var mı?
G-Man

Bu komutu çalıştırdığımda, tüm yeni satırlarımdan kurtulmuş gibiyim.
K. Carpenter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.