Kullanıcılarıma komut satırı seçenekleriyle bir ortam değişkeni belirtmelerine izin vererek bir yapılandırma katmanı sağlamaya çalışıyorum. Bu yapılandırma aslında argümanları alan bir sarıcı programı (run.sh
) ve daha sonra programımı çağırır (program.sh
).Çevrelemeyi Değişken Komut Dosyası Değişkenlerine Dönüştürme
Teklifleri koruyan argümanlarla ilgili bir sorun yaşıyorum, bu da beklenmedik argümanların iletilmesine neden oluyor. İşte
uygulanmasının örneği sunulmuştur:run.sh
exec `pwd`/program.sh ${CONFIG} "[email protected]"
program.sh
for var in "[email protected]"
do
echo "$var"
done
bir örnek çağırma şu şekilde görünecektir:
$> CONFIG='--foo="bar baz quo" --foo2="bar2 baz2"' ./run.sh hello abc123
--foo="bar
baz
quo"
--foo2="bar2
baz2"
hello
abc123
ben umuyordum gibi çıktı: Ben qoutes içinde run.sh içinde sarma $ {CONFIG} denedi, ama bu sadece --foo="bar baz quo" --foo2="bar2 baz2"
tek argüman yapar
--foo="bar baz quo"
--foo2="bar2 baz2"
hello
abc123
. CONFIG
'un içindeki tekliflerden kaçınmak da yanlış bir sonuç verir.
program.sh
eval exec `pwd`/program.sh "${CONFIG}" "[email protected]"
'abc123' nerededir? – cdarke
Çevre, böyle argümanlar iletmenin doğru yolu değildir. – chepner
@cdarke 'abc123' yanlış çizgiyi koydu, bunu yansıtmak için soruyu güncelledi. – Lull3rSkat3r