Dockerfile exec forma: curl --noproxy * átadása shell-idézőjelek nélkül
Az exec formában minden JSON-karakterlánc egy argumentum. A további shell-idézőjelek megváltoztathatják azt az értéket, amelyet a curl a --noproxy számára kap.
A Dockerfile exec formájában a JSON-tömb már maga az argumentumlista:
CMD ["curl", "--noproxy", "*", "https://example.com/"]
Itt a curl a --noproxy és a * külön argumentumként kapja. A csillag nem bővül fájlnevekké, mert ezt a formát egyetlen parancs-shell sem értelmezi.
Ne tegye az opciót és az értéket egyetlen JSON-karakterláncba. Akkor se adjon hozzá szó szerinti egyszeres idézőjeleket a karakterláncon belül, csak mert egy terminálpélda ezeket a shell védelmére használta. Ezek az idézőjel-karakterek a programnak átadott érték részévé válhatnak.
A shell-formának más a határa: tartalmaz shellt, ezért ott az idézőjelezési és bővítési szabályok számítanak. Az exec formájú parancsból indított kifejezett shell ezt a határt visszahozza.
A --noproxy * jelentése a curlben az, hogy minden hoszt esetében megkerülje a proxyt. Ez útvonalválasztási döntés, nem általános argumentumformátum-teszt. Csak akkor használja, ha a közvetlen útvonal a kívánt szabály. Ha szűkebb megkerülésre van szüksége, adja meg a megfelelő értéket ugyanabban az egy argumentum elemként szerkezetben.