5
การตั้งค่าตัวแปรสภาพแวดล้อมก่อนที่คำสั่งใน Bash จะไม่ทำงานสำหรับคำสั่งที่สองในไพพ์
ในเชลล์ที่กำหนดโดยปกติฉันจะตั้งค่าตัวแปรหรือตัวแปรแล้วเรียกใช้คำสั่ง เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้เกี่ยวกับแนวคิดของการเพิ่มคำนิยามตัวแปรให้กับคำสั่ง: 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 ฉันได้รับคำตอบที่ดีมากมาย! …