명령 대체를 수행하고 결과를 변수에 저장하고 있습니다. 그러나 명령 결과에 큰 따옴표가 포함되어 변수가 비어있게됩니다.
실행 test="$(java -version)"
하면 다음과 같은 결과가 나타납니다.
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
그러나 실행 echo $test
하면 빈 줄이 생성됩니다.
test="$(java -version)"
결과를 터미널에 직접 인쇄하는 이유는 java -version
표준 출력 (stdout)이 아닌 표준 오류 (stderr)로 출력하기 때문입니다.
$(...)
캡처 하는 stdout 출력이 없기 때문에 $test
에 빈 문자열이 할당됩니다.
해결책은 표준 오류 (stderr)를 표준 출력 (stdout)으로 리디렉션하는 것입니다.
version=$(java -version 2>&1)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다