İşte kod:
#! /bin/bash
function foo() {
G1=123
echo "ReturnVal"
}
RV="$(foo)"
echo "RV=$RV, G1=$G1" # RV=ReturnVal, G1=
foo >/dev/null
echo "G1=$G1" # G1=123
Fonksiyonu çalıştırmak, global G1 değişkenini ayarlamak, VE fonksiyonun stdout'unu bir değişkende yakalamak istiyorum.
İlk çağrı global değişkeni ayarlayamaz çünkü işlev bir alt kabukta çalıştırılır. Ama stdout'u bir değişkene sokmanın kurallı yolu budur.
Foo () 'nin 2. çağrısının stdout'u attığını anlıyorum. Konsola yazmak, benim amacım için eşit derecede anlamsız. Ancak, fonksiyonun global değişkeni ayarlayabildiğini gösterir.
Herhangi bir çözümün dosya sistemindeki geçici bir dosyayı kullanamayacağını unutmayın. Aslında yazmaya çalıştığım işlev zaten geçici dosyalar ve bunların otomatik temizliği ile ilgileniyor; başka bir geçici dosya tanıtımı bir seçenek değildir.
Bir yolu var mı?