Saya mencoba melakukan penggantian variabel lingkungan envsubst
, tetapi saya hanya ingin mengganti variabel tertentu.
Dari dokumen saya harus bisa mengatakan envsubst
untuk hanya mengganti variabel-variabel tertentu tetapi saya gagal untuk dapat melakukan itu.
Misalnya, jika saya memiliki file yang berisi:
VAR_1=${VAR_1}
VAR_2=${VAR_2}
bagaimana saya harus mengeksekusi envsubst
sehingga hanya menggantikan referensi ${VAR_1}
?
shell
environment-variables
João Angelo
sumber
sumber
Per halaman manual:
Di mana string SHELL-FORMAT adalah "string dengan referensi ke variabel shell dalam bentuk
$variable
atau${variable}
[...] Nama-nama variabel harus hanya terdiri dari karakter ASCII alfanumerik atau garis bawah, tidak dimulai dengan angka dan bukan kosong; jika tidak, referensi variabel tersebut adalah diabaikan. " .Jadi, kita harus meneruskan nama variabel masing-masing ke
envsubst
dalam string format shell (jelas, mereka perlu melarikan diri / dikutip agar dapat diteruskan secara harfiah keenvsubst
). Contoh:masukan file misalnya
infile
:dan beberapa nilai suka
lalu berlari
atau
atau
output
Atau, jika Anda lebih suka backslash:
menghasilkan
sumber
envsubst "$(printf '${%s} ' ${!PREFIX*})" < infile
SUBST_VARS
kemudian:envsubst "$(printf '${%s} ' $SUBST_VARS)" < infile