주어진 쉘에서 일반적으로 변수 또는 변수를 설정하고 명령을 실행합니다. 최근에 변수 정의를 명령 앞에 추가하는 개념에 대해 배웠습니다.
FOO=bar somecommand someargs
이것은 작동합니다 ... LC_ * 변수를 변경하거나 ( 예 : '[az]'char 범위와 같은 인수에는 영향을 미치지 않는 것처럼 보이는) LC_ * 변수를 변경 하거나 출력을 다른 명령으로 파이핑 할 때 작동 하지 않습니다 .
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
"FOO = bar"를 사용하여 somecommand2를 앞에 추가 할 수도 있는데, 이는 작동하지만 원치 않는 중복을 추가하며 변수에 따라 해석되는 인수 (예 : '[az]')에는 도움이되지 않습니다.
그렇다면 한 줄 로이 작업을 수행하는 좋은 방법은 무엇입니까?
나는 순서대로 뭔가를 생각하고있다.
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
나는 좋은 답변을 많이 받았습니다! 목표는 이것을 "내보내기"를 사용하지 않고 하나의 라이너로 유지하는 것입니다. Bash 호출을 사용하는 방법은 전체적으로 가장 좋았지 만 "내보내기"가 포함 된 괄호 버전은 조금 더 콤팩트했습니다. 파이프 대신 리디렉션을 사용하는 방법도 흥미 롭습니다.
(T=$(date) echo $T)
작동합니다