bash
bir alt çizgi bağlamında bir boru hattının sağ tarafını çalıştırır , bu nedenle değişkenlerdeki değişiklikler (yani ne read
olduğu) korunmaz - komutun sonunda alt kabuk yaptığında ölürler.
Bunun yerine, işlem ikamesini kullanabilirsiniz :
$ read a b dump < <(echo 1 2 3 4 5)
$ echo $b $a
2 1
Bu durumda, read
birincil kabuğumuzda çalışır ve çıktı üreten komutumuz alt kabukta çalışır. <(...)
Sözdizimi oluşturur bir altkabuk ve biz girişine yönlendirmek boru, onun çıkışını bağlayan read
sıradan olan <
operasyon . Çünkü read
ana kabuğunda değişkenler doğru ayarlanmış koştu.
Bir yorumda belirtildiği gibi, hedefiniz tam anlamıyla bir dizeyi bir şekilde değişkenlere bölmekse, burada dizeyi kullanabilirsiniz :
read a b dump <<<"1 2 3 4 5"
Sanırım bundan daha fazlası var, ama yoksa daha iyi bir seçenek.