Dalam shell yang diberikan, biasanya saya akan menetapkan variabel atau variabel dan kemudian menjalankan perintah. Baru-baru ini saya belajar tentang konsep menambahkan definisi variabel ke sebuah perintah:
FOO=bar somecommand someargs
Ini berfungsi ... agak. Itu tidak berfungsi ketika Anda mengubah variabel LC_ * (yang tampaknya memengaruhi perintah, tetapi tidak argumennya, misalnya, rentang char '[az]') atau ketika memipitkan output ke perintah lain dengan demikian:
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
Saya dapat menambahkan somecommand2 dengan "FOO = bar" juga, yang berfungsi, tetapi yang menambahkan duplikasi yang tidak diinginkan, dan itu tidak membantu dengan argumen yang ditafsirkan tergantung pada variabel (misalnya, '[az]').
Jadi, apa cara yang baik untuk melakukan ini pada satu baris?
Saya sedang memikirkan sesuatu berdasarkan urutan:
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
Saya mendapat banyak jawaban bagus! Tujuannya adalah untuk membuat ini satu-liner, lebih disukai tanpa menggunakan "ekspor". Metode menggunakan panggilan ke Bash adalah yang terbaik secara keseluruhan, meskipun versi kurung dengan "ekspor" di dalamnya sedikit lebih kompak. Metode menggunakan redirection bukan pipa juga menarik.
(T=$(date) echo $T)
akan bekerja