답변:
이 문제를 직접 해결 한 것으로 보이지만 다음을 사용할 수 있습니다.
$(command parameter1 parameter2)
편집 편집 : 아래는 다소 잘못되었습니다. 서브 셸에서 명령을 실행하는 동안 환경 변수를 계속 사용할 수 있습니다. 오해의 소지가있는 분들 죄송합니다 ...
편집 : 하위 쉘에서 실행되며 내 보내지 않은 환경 변수는 사용되지 않습니다. 동일한 쉘에서 명령을 실행하려면 다음을 사용해야합니다.
eval $(command parameter1 parameter2)
주어진 또 다른 대답은 bash 자체를 통해 파이프하는 것입니다.
echo 'uname -a' | bash
하위 쉘에서 실행되어 필요한 동일한 쉘에서 실행됩니다.
echo 'uname -a' | bash -c
또한 $ () 구문 대신 백틱을 사용할 수도 있지만 권장되지는 않습니다 .
eval
여기서 사용할 이유가 없습니다 . 이유가 있으면 설명해주세요. (3) 마지막 예제 ( -c
)가 완전히 잘못되었습니다.
이것을 사용하십시오 :
commandlineA param1 param2 | bash
예:
echo "uname -a" | bash
산출:
Linux k1104 2.6.38-8- 일반 # 42- 우분투 SMP 월요일 4 월 11 일 03:31:50 UTC 2011 i686 i686 i386 GNU / Linux
$(commandlineA param1 param2)
printf '\143\144\040\057\n' | bash
명령은 새로운 별도 (및 일시적) 셸 프로세스에서 실행되기 때문에 궁극적으로는 아무런 문제가 없습니다. 대조적으로, $(printf '\143\144\040\057\n')
현재 활성화 된 대화식 쉘이 디렉토리를 변경하게합니다.