Bash - dosyadan satır oku


1

İçinde dize olarak saklanan değeri olan tek satırlık bir dosyam var:

server-name-2009-August-9-AMI

Dosya adı server_name. Bu değeri bash betiğiyle bir değişkene okumanın en kısa ve en zarif yolu nedir?

Yanıtlar:


8

Bir "yararlı kedi kullanımı" yapabilirsiniz;)

VAR = $(cat $(dirname $0)/server_name)

Bu, komut dosyanızla aynı dizinde bulunan "server_name" dosyasının içeriğini $ VAR içine koyacaktır. Komut dosyasını nerede çalıştırdığınızdan bağımsız olarak çalışır.


1
Bash man sayfası aslında önerir $(< file) üzerinde $(cat file).
chepner

13

Kullanabilirsiniz read Komut. Herhangi bir değişken sağlamazsanız, satır otomatik olarak değişkene kaydedilir. REPLY Bash Bir singe değişkeni sağlarsanız, satır bu değişkene kaydedilir. Birden fazla değişken sağlarsanız, Bash, her bir değişkene bir kelime koymak için, satırı kelimeler olarak ayırır (bölme beyaz alanda yapılır). (Değişkenlerden daha fazla kelime varsa, her değişken bir kelime alır, ancak sonuncusu satırın kalanını alır.)

Örnek:

telemachus ~ $ read < buff
telemachus ~ $ echo $REPLY
#!/usr/bin/env perl
telemachus ~ $ read LINE < buff
telemachus ~ $ echo $LINE
#!/usr/bin/env perl

Değişkenin bir dolar işareti olmadan atandığını unutmayın ( REPLY veya LINE ), ama onu kullandığınızda, ihtiyacınız $REPLY veya $LINE.

Yani böyle bir şey istersiniz:

read SERVER < /path/to/server_name

İki komut dosyasının aynı dizinde olacağını varsaymak yerine okumak istediğiniz dosyanın tam yolunu kullanmanızı öneririm.

Bunun en şık çözüm olduğuna yemin etmeyeceğim.


1
Özlü için +1, okuma açıklaması
Ryan Thompson
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.