ProgramingTip

Bash 펼쳐지는 명령 출력을 변수에 저장합니다.

bestdevel 2020. 12. 25. 10:27
반응형

Bash 펼쳐지는 명령 출력을 변수에 저장합니다.


bash 내의 내부 변수 내부에 명령 출력을 저장하는 데 문제가 있습니다.
일반적으로 두 가지 방법이 있음을 알고 있습니다.

어느 한 쪽

foo=$(bar)
# or
foo=`bar`

그러나 Java 버전 쿼리의 경우 작동하지 않는 것입니다.

나는했다 :

version=$(java --version)

이 var 안에 값을 저장하지 않습니다. 그것은 여전히 ​​그것을 인쇄합니다.

또한 시도를 파일로 시도했지만 실패합니다.


 version=$(java -version 2>&1)

버전 매개 변수는 대시 하나만 사용하며 메시지가 기록되는 stderr을 리디렉션하면 원하는 결과를 얻을 수 있습니다.

부수적으로 두 개의 대시를 사용하는 것은 Unix와 같은 시스템에서 비공식적 인 표준이지만 Java는 서로 다른 플랫폼에서 거의 동일하려고하기 때문에 Unix / Linux- 기대를 사용하고 Windows에서 동일하게 작동합니다. Mac OS에서 용의자.


즉 때문이다 java -version쓰기로 stderr하지 stdout. 다음을 무시합니다.

version=$(java -version 2>&1)

로 리디렉션 stderr생성 stdout.

다음 두 명령을 실행하여 확인할 수 있습니다.

java -version > /dev/null

java -version 2> /dev/null

참조 URL : https://stackoverflow.com/questions/9768228/bash-script-store-command-output-into-variable

반응형