在给定的 shell 中,通常我会设置一个或多个变量,然后运行命令。最近我了解了将变量定义附加到命令的概念:
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 调用的方法总体上是最好的,尽管带有“导出”的括号版本更紧凑一些。使用重定向而不是管道的方法也很有趣。