Metinde de belirtildiği üzere, sadece (örn referansa sahip $VARNAME
veya ${VARNAME}
bir olağan kabuk komutu gibi değişkenler). Ancak, kabuğun bunları önceden genişletmediğinden emin olmalısınız.
İşte bunu gösteren bazı örnekler (varsayalım export FOO=BAR
):
$ echo '$FOO$FOO2' | envsubst
BAR
Gördüğünüz gibi, tanımlanmadığı için $ FOO2 yerine "" getirildi. Şimdi bu değiştirmeyi yalnızca $ FOO ile sınırlayabiliriz:
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
""
yerine kullanmak istenmeden ''
önce ikameye yol açacaktır:
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(Bu, envsubst "BAR"
hiçbir değişkeni algılamadığından hiçbirinin değiştirilmediği etkili çağrı anlamına gelir.)
Gibi man
sayfalık söyledi başvurulan tüm değişkenler SHELL-FORMAT
bile bunu yapabilirsiniz, böylece değiştirilir:
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
Gördüğünüz gibi SHELL-FORMAT
, oldukça esnektir.
Son olarak, parametre aşağıdakilerle --variables
değiştirilmek üzere hangi değişkenlerin seçildiğini değerlendirmenizi sağlar SHELL-FORMAT
:
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
Yukarıdaki erken ikame örneğinde bu hatayı gösterecektir:
$ envsubst --variables "$FOO"
(empty string returned)
Belirtildiği gibi man
PAGE, envsubst
ne zaman bir stdinput işlemez --variables
mevcuttur.