У даній оболонці, як правило, я встановлюю змінну чи змінні, а потім виконую команду. Нещодавно я дізнався про концепцію попередження визначення змінної для команди:
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, був найкращим в цілому, хоча дужка версії з "експортом" в ньому була трохи більш компактною. Також цікавий метод використання перенаправлення, а не труби.
(T=$(date) echo $T)
буде працювати