วิธีการส่งออกหางแหล่งที่มา (หรือเรียกใช้)


2

ฉันพยายามโหลดตัวแปรหลายตัวจากไฟล์ (ไม่ใช่ .bash_* ) ซึ่งคล้ายกับ:

export MY_VAR='foo'

คำสั่งที่ฉันใช้กับ "แหล่งที่มา" นี่คือ

`tail -1 myFile`

มันใช้งานได้ แต่ฉัน echo $MY_VAR, ฉันเข้าใจ

'foo'

แต่จริงๆแล้วฉันวิ่ง export MY_VAR='foo' ใน terminal แล้ว echo $MY_VAR มันเอาท์พุท:

foo

ทำไมความแตกต่างในคำพูดและฉันจะแก้ไขได้อย่างไร


1
มีเหตุผลที่จะไม่ใช้ source myFile คำสั่งเพื่อ "แหล่งที่มา" ไฟล์หรือไม่
ssssteffff

เป็นไฟล์ apache envvars ฉันเพิ่ม envvars สองสามอันสำหรับไซต์ของฉันและต้องการเฉพาะแหล่งที่มาเมื่อฉันลงชื่อเข้าใช้ผ่าน ssh ฉันเปิดกว้างสำหรับกลยุทธ์อื่น ๆ
Jacob Valenta

คำตอบ:


3

การใช้ backticks เป็นสิ่งที่เรียกว่าการทดแทนคำสั่ง เชลล์ทดแทนมันหลังจากแยกโทเค็นในเอาต์พุต เนื่องจากพบเครื่องหมายคำพูดในผลลัพธ์ เช่นนี้มันจะดำเนินการ:

export MY_VAR=\'foo\'

ปล่อยให้ตัวแปรล้อมรอบด้วยเครื่องหมายคำพูด

คุณสามารถใช้การทดแทนกระบวนการแทนและใช้ source คำสั่ง:

source <(tail -1 myFile)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.