ในเชลล์ที่กำหนดโดยปกติฉันจะตั้งค่าตัวแปรหรือตัวแปรแล้วเรียกใช้คำสั่ง เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้เกี่ยวกับแนวคิดของการเพิ่มคำนิยามตัวแปรให้กับคำสั่ง:
FOO=bar somecommand someargs
มันใช้งานได้ ... มันไม่ทำงานเมื่อคุณเปลี่ยนตัวแปร LC_ * (ซึ่งดูเหมือนว่าจะส่งผลกระทบต่อคำสั่ง แต่ไม่ใช่ข้อโต้แย้งตัวอย่างเช่น '[az]' ช่วงถ่าน) หรือเมื่อไพพ์เอาต์พุตไปยังคำสั่งอื่น:
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
ฉันสามารถเติม somecommand2 ด้วย "FOO = bar" ได้ด้วยซึ่งใช้งานได้ แต่เพิ่มการซ้ำซ้อนที่ไม่ต้องการและไม่ช่วยอาร์กิวเมนต์ที่ตีความขึ้นอยู่กับตัวแปร (เช่น '[az]')
ดังนั้นวิธีที่ดีในการทำเช่นนี้ในบรรทัดเดียวคืออะไร?
ฉันกำลังคิดบางอย่างตามคำสั่งของ:
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
ฉันได้รับคำตอบที่ดีมากมาย! เป้าหมายคือเพื่อให้เป็นหนึ่งซับโดยเฉพาะอย่างยิ่งโดยไม่ต้องใช้ "ส่งออก" วิธีการใช้การเรียกไปยัง Bash นั้นดีที่สุดโดยรวมแม้ว่ารุ่นที่ใช้ parenth กับ "export" ในนั้นมีขนาดเล็กกว่าเล็กน้อย วิธีการใช้การเปลี่ยนเส้นทางมากกว่าไปป์ก็น่าสนใจเช่นกัน
(T=$(date) echo $T)
จะทำงาน