Bir Linux Komutunun Çıktısını Bir Değişkene Atama


Bir komutu çalıştırdığınızda, bir tür çıktı üretir: ya bir programın sonucunun üreteceği varsayılır ya da programın yürütme ayrıntılarının durum/hata mesajlarını üretir. Bazen bir komutun çıktısını daha sonraki bir işlemde kullanılmak üzere bir değişkende saklamak isteyebilirsiniz.

Bu yazıda, bir kabuk komutunun çıktısını, özellikle kabuk komut dosyası oluşturma amacıyla yararlı olan bir değişkene atamanın farklı yollarını inceleyeceğiz.

Bir komutun çıktısını bir değişkende saklamak için aşağıdaki formlarda kabuk komut değiştirme özelliğini kullanabilirsiniz:

variable_name=$(command)
variable_name=$(command [option ...] arg1 arg2 ...)
OR
variable_name='command'
variable_name='command [option ...] arg1 arg2 ...'

Aşağıda komut değiştirme kullanımına ilişkin birkaç örnek verilmiştir.

Bu ilk örnekte, who komutunun değerini (sistemde kimin oturum açtığını gösterir) CURRENT_USERS kullanıcısı değişkeninde saklayacağız:

CURRENT_USERS=$(who)

Daha sonra değişkeni echo komutunu kullanarak görüntülenen bir cümlede şu şekilde kullanabiliriz:

echo -e "The following users are logged on the system:\n\n $CURRENT_USERS"

Yukarıdaki komutta: -e işareti, kullanılan kaçış dizilerinin (yeni satır için \n gibi) yorumlanması anlamına gelir. Zamanın yanı sıra hafızanın da boşa harcanmasını önlemek için, echo komutunun içindeki komut değişikliğini aşağıdaki gibi yapmanız yeterlidir:

echo -e "The following users are logged on the system:\n\n $(who)"

Daha sonra ikinci formu kullanarak kavramı göstermek için; mevcut çalışma dizinindeki toplam dosya sayısını FILES adlı bir değişkende saklayabilir ve bunu daha sonra aşağıdaki gibi echo edebiliriz:

FILES=`sudo find . -type f -print | wc -l`
echo "There are $FILES in the current working directory."

Şimdilik bu kadar, bu yazımızda bir kabuk komutunun çıktısını bir değişkene atama yöntemlerini anlattık. Aşağıdaki geri bildirim bölümünü kullanarak düşüncelerinizi bu yazıya ekleyebilirsiniz.