Trong một shell nhất định, thông thường tôi sẽ đặt một biến hoặc biến và sau đó chạy lệnh. Gần đây tôi đã biết về khái niệm chuẩn bị một định nghĩa biến cho một lệnh:
FOO=bar somecommand someargs
Điều này hoạt động ... loại. Nó không hoạt động khi bạn thay đổi biến LC_ * (có vẻ như ảnh hưởng đến lệnh, nhưng không phải là đối số của nó, ví dụ, phạm vi char '[az]') hoặc khi đường ống đầu ra sang lệnh khác:
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
Tôi cũng có thể thêm somecommand2 bằng "FOO = bar", nó hoạt động, nhưng có thêm sự trùng lặp không mong muốn và nó không giúp ích cho các đối số được diễn giải tùy thuộc vào biến (ví dụ: '[az]').
Vì vậy, một cách tốt để làm điều này trên một dòng là gì?
Tôi đang suy nghĩ điều gì đó theo thứ tự:
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
Tôi đã nhận được rất nhiều câu trả lời tốt! Mục tiêu là giữ cho nó một lớp lót, tốt nhất là không sử dụng "xuất khẩu". Phương thức sử dụng lệnh gọi Bash là tổng thể tốt nhất, mặc dù phiên bản gốc có "xuất khẩu" trong đó nhỏ gọn hơn một chút. Phương pháp sử dụng chuyển hướng chứ không phải là một đường ống cũng thú vị.
(T=$(date) echo $T)
sẽ hoạt động