쉘 스크립트에서 실행결과가 변수에 저장되지 않는 경우 변수 저장 방법

2020. 6. 5. 10:49IT/S . e . v . e . r . I . n . f . r . a

쉘 스크립트에서 일반적인 실행 결과를 변수로 저장하고 싶을 때는
아래와 같이 하면 변수에 결과 값이 저장이 되지만

VAR_TEST=$(date +%Y)
echo ${VAR_TEST}

웹서버의 종류나 버전 정보를 보기 위해
-v 옵션을 준 커맨드를 실행하면 이 결과 값이 일반적인 방법으로는 저장되지 않는다.

VAR_TEST=$(httpd -v | awk '{print $1}')
echo ${VAR_TEST}

이럴 때 출력 결과를 변수에 저장하고 싶다면 아래와 같은 방법을 사용해 보길 바란다.
아래 내용은 표준에러를 표준출력으로 리다이렉트해서 변수로 저장할 수 있게 한 것이다.

VAR_TEST=$(httpd -v 2>&1 | awk '{print $1}')
echo ${VAR_TEST}

좀 더 심화해서 출력되는 내용을 가공해서 필요한 정보로 만들 수도 있다.

VAR_WEB_DM=$(nginx -v 2>&1 | awk '{split($3,VAR_WEB," |/");print VAR_WEB[1],VAR_WEB[2]}')
VAR_WEB_ARR=(${VAR_WEB_DM})

echo ${VAR_WEB_ARR[0]}
echo ${VAR_WEB_ARR[1]}