3 Temmuz 2020 Cuma

bash process substitution

Giriş
<(...) şeklindeki komutları çalıştırır ve çıktısını verir. Açıklaması şöyle
The <(...) process substitution executes the contained script (in a subshell), but it acts like a filename, so you need the first < to redirect the contents (which is the output of the script) into the braced script. The grouped commands are executed in the current shel;.
process substitution Yerine Farklı Alternatifler

1. pipe Kullanmak
Process substitution yerine komut çıktısı pipe ile gönderilebilir. Çıktıyı komut gruplarına göndermek istersek {...} şeklinde kullanmak gerekir. Şöyle yaparız.
df | { read a ; read a b ; echo $a ; }
2. subshell Kullanmak
Aslında pile ile aynı şey. Sadece çıktı veren komut farklı bir shell içinde çalıştırılıyor.
Örnek
Şöyle yaparız
$ ( cat file1; echo "newtextinbetween"; cat file2 ) > file3
 $ cat file3
 text1
 newtextinbetween
 text2
process substitution Kullanımı
Örnek
Şöyle yaparız. file1 ve file2'nin içeriğinin arasına "nextextinbetween" eklenir.
cat file1 <(echo "newtextinbetween") file2 > file3
Örnek
Şöyle yaparız. Tüm komutun çıktısı vim'e verilir.
vim <(cmd1 | cmd2 | ...)
Örnek
Eğer okuması zorsa çoklu satıra bölünebilir. Şöyle yaparız. Burada df komutunu çıktısındaki her bir sütun header, filesystem ve rest değişkenlerine okunuyor
{
    read header
    read filesystem rest
} < <(
    df .
)
echo "$filesystem"

Hiç yorum yok:

Yorum Gönder