웹사이트 검색

Linux 명령의 출력을 변수에 할당하는 방법


명령을 실행하면 일종의 출력이 생성됩니다. 즉, 프로그램 결과가 생성된다고 가정하거나 프로그램 실행 세부 정보의 상태/오류 메시지가 생성됩니다. 때로는 나중에 작업에 사용하기 위해 명령의 출력을 변수에 저장해야 할 수도 있습니다.

이 게시물에서는 쉘 명령의 출력을 변수에 할당하는 다양한 방법, 특히 쉘 스크립팅 목적에 유용한 방법을 검토할 것입니다.

명령의 출력을 변수에 저장하려면 아래 형식의 셸 명령 대체 기능을 사용할 수 있습니다.

variable_name=$(command)
variable_name=$(command [option ...] arg1 arg2 ...)
OR
variable_name='command'
variable_name='command [option ...] arg1 arg2 ...'

다음은 명령 대체를 사용하는 몇 가지 예입니다.

이 첫 번째 예에서는 변수 CURRENT_USERS user에 who(시스템에 로그온한 사람을 표시) 명령의 값을 저장합니다.

CURRENT_USERS=$(who)

그런 다음 echo 명령을 사용하여 표시되는 문장에서 변수를 다음과 같이 사용할 수 있습니다.

echo -e "The following users are logged on the system:\n\n $CURRENT_USERS"

위 명령에서 -e 플래그는 사용된 모든 이스케이프 시퀀스(예: 개행의 경우 \n)를 해석함을 의미합니다. 시간과 메모리 낭비를 피하려면 다음과 같이 echo 명령 내에서 명령 대체를 수행하면 됩니다.

echo -e "The following users are logged on the system:\n\n $(who)"

다음으로 두 번째 형식을 사용하여 개념을 설명합니다. 현재 작업 디렉터리에 있는 총 파일 수를 FILES라는 변수에 저장하고 나중에 다음과 같이 에코할 수 있습니다.

FILES=`sudo find . -type f -print | wc -l`
echo "There are $FILES in the current working directory."

여기까지입니다. 이 기사에서는 쉘 명령의 출력을 변수에 할당하는 방법을 설명했습니다. 아래 피드백 섹션을 통해 이 게시물에 대한 생각을 추가할 수 있습니다.