Score:0

สามารถใช้ envsubst เพื่อแทนที่ตัวแปรสภาพแวดล้อมในตัวแปรที่กำหนดไม่ใช่ไฟล์ได้หรือไม่

ธง cn

ฉันรู้ว่าฉันสามารถใช้ สารบัญ คำสั่งเพื่อแทนที่ตัวแปรสภาพแวดล้อมภายในไฟล์และเขียนไปยังไฟล์เอาต์พุต:

envsubst < input.txt > output.txt

อย่างไรก็ตาม ตอนนี้ฉันมีเพียงตัวแปรและไม่ใช่ไฟล์ แต่ฉันยังต้องแทนที่ตัวแปรสภาพแวดล้อมภายใน

export original_text="สวัสดี $name โปรดมาที่นี่ $date"
# ฉันต้องการแทนที่ $name และ $date ใน RAM ไม่ใช่ในดิสก์และไฟล์
ส่งออก $name="จอห์น"
ส่งออก $date = "พรุ่งนี้"
output=$(envsubst < $original_text) # นี่คือคำสั่งหลอก
echo $เอาท์พุท
# พิมพ์ => สวัสดี จอห์น โปรดมาที่นี่ในวันพรุ่งนี้

เป็นไปได้ไหม? ทำสิ่งนี้ได้อย่างไร?

Score:2
ธง in

ได้ คุณสามารถใช้ here-string: <<< "ตัวแปร $"

original_text ของคุณต้องอยู่ในเครื่องหมายคำพูดเดียว มิฉะนั้น ตัวแปรจะถูกแทนที่เมื่อสร้าง ต้นฉบับ_ข้อความ.

$ original_text='สวัสดี $name โปรดมาที่นี่ $date'
$ ชื่อส่งออก = "จอห์น"
วันที่ส่งออก $ = "พรุ่งนี้"
$envsubst <<< "$ต้นฉบับ_ข้อความ"
สวัสดีจอห์น โปรดมาที่นี่ในวันพรุ่งนี้

แน่นอน คุณสามารถบันทึกไว้ในตัวแปรเหมือนที่คุณเคยทำ:

เอาต์พุต=$(envsubst <<< "$original_text")

คุณยังสามารถไปป์ สารบัญ, เช่น.:

$printf '%s\n' "$var" | สารบัญ
สวัสดีจอห์น โปรดมาที่นี่ในวันพรุ่งนี้
Saeed Neamati avatar
cn flag
ยอดเยี่ยม ฉันจะรับผลลัพธ์เป็นตัวแปรแทนบรรทัดคำสั่งได้อย่างไร

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา