ตามที่ระบุโดยข้อความคุณเพียงแค่ต้องอ้างอิง (เช่นโดย$VARNAME
หรือ${VARNAME}
) ตัวแปรเช่นเดียวกับในคำสั่งเชลล์ปกติ อย่างไรก็ตามคุณต้องตรวจสอบให้แน่ใจว่าเชลล์ไม่ได้ขยายไปก่อน
นี่คือตัวอย่างที่แสดงให้เห็นถึงสิ่งนี้ (สมมติว่าexport FOO=BAR
):
$ echo '$FOO$FOO2' | envsubst
BAR
อย่างที่คุณเห็น $ FOO2 ถูกแทนที่ด้วย "" เนื่องจากไม่ได้กำหนดไว้ ตอนนี้เราสามารถ จำกัด การแทนที่นั้นเพียง $ FOO โดย:
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
ใช้""
แทน''
จะนำไปสู่การทดแทนก่อนที่จะต้องการ:
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(จำนวนนี้เป็นการเรียกที่มีประสิทธิภาพenvsubst "BAR"
ซึ่งตรวจพบว่าไม่มีตัวแปรดังนั้นจึงไม่มีการแทนที่)
ดังที่man
-page กล่าวไว้ตัวแปรทั้งหมดที่อ้างถึงSHELL-FORMAT
จะถูกแทนที่ดังนั้นเราสามารถทำสิ่งนี้ได้:
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
อย่างที่คุณเห็นSHELL-FORMAT
มันค่อนข้างยืดหยุ่น
ในที่สุดพารามิเตอร์--variables
ช่วยให้คุณประเมินตัวแปรที่เลือกสำหรับการทดแทนโดยSHELL-FORMAT
:
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
ในตัวอย่างการทดแทนก่อนกำหนดจากด้านบนสิ่งนี้จะแสดงให้เห็นข้อผิดพลาด:
$ envsubst --variables "$FOO"
(empty string returned)
ตามที่ระบุไว้ใน - man
หน้าenvsubst
ไม่ประมวลผล stdinput ใด ๆ เมื่อ--variables
มีอยู่