Bash 스크립트의 eval 명령
이 문서는 Bash 스크립트에서 문자열을 명령으로 사용하는 방법에 관한 것입니다. 이를 위해 eval
명령이 사용됩니다.
Bash 스크립트의 평가 명령
변수 또는 입력 값(예:)을 사용하여 문자열을 만들고 마지막에 명령으로 실행해야 하는 특정 Bash 스크립트가 있습니다. 이러한 경우 eval
이 솔루션입니다.
Bash에서 eval
명령은 쉘 명령과 유사한 매개변수를 평가합니다. 인수는 문자열로 결합되어 쉘 명령으로 전송된 다음 명령을 실행합니다.
현재 쉘에서 eval
은 명령을 실행합니다. 이 명령은 특정 연산자나 예약어가 있는 명령을 실행할 때 편리합니다.
이 명령은 스크립트가 실행될 때까지 변수 이름을 알 수 없는 모든 스크립트에서 사용할 수도 있습니다. 이 가이드는 Linux 사용자가 이 명령을 사용하는 방법을 이해하는 데 도움이 됩니다.
통사론:
eval [arguments...]
인수
는 문자열 리터럴로 결합된 이 명령에 전달된 다음 실행을 위해 Bash로 전송됩니다. 이 명령은 명령 실행 후 종료 상태를 반환합니다.
이 명령에 인수가 전달되지 않거나 null
이 전달되면 종료 상태로 0
을 반환합니다.
eval
을 사용하여 파일의 라인 수 계산
몇 줄의 텍스트가 포함된 sample.txt
파일이 있다고 가정합니다. 해당 파일의 줄 수를 계산해야 하는 경우 wc -l
명령을 사용할 수 있습니다.
eval
명령을 사용하여 이 작업을 수행합니다. 명령은 다음과 같습니다.
myComm="wc -l sample.txt"
eval $myComm
이것의 출력을 살펴보자.
eval
을 사용하여 산술 연산 풀기
일부 산술 연산을 수행해야 한다고 가정합니다. eval
명령을 사용하여 이를 수행할 수 있습니다.
이를 위해 Bash 스크립트를 생성합니다.
#!/bin/bash
a=4
b=5
comm1="`expr $a + $b`"
comm2="echo"
eval $comm2 $comm1
이 스크립트에서 두 개의 명령을 포함하는 두 개의 변수를 만들었습니다. 하나는 산술 연산을 수행하기 위한 것이고 다른 하나는 echo
명령을 위한 것입니다. 마지막 줄에서 이 두 변수를 eval
명령에 대한 인수로 전달했습니다.
eval
은 이 두 변수를 결합하여 아래와 같은 명령을 구성합니다.
echo 'expr 4 + 5'
이 스크립트를 실행하면 다음과 같은 결과가 표시됩니다.
eval
을 사용하여 변수 값 인쇄
다음 예제에서는 다른 변수를 포함하는 변수의 값을 인쇄합니다.
#!/bin/bash
str1="my script"
str2=str1
comm="echo"
eval $comm \${$str2}
위 스크립트의 출력은 다음과 같습니다.
eval
을 사용하여 숫자 합계 인쇄
다음 예제에서는 스크립트에서 for
루프를 사용하여 1에서 4까지의 숫자 합계를 인쇄합니다. 그런 다음 eval
명령을 사용하여 해당 합계를 인쇄합니다.
이 문제의 스크립트는 다음과 같습니다.
#!/bin/bash
sum=0
for n in {1..4}
do
sum=$(($sum+$n))
done
comm="echo 'The result of sum from 1-4 is: '"
eval $comm $sum
위 스크립트의 출력은 다음과 같습니다.
결론
eval
명령은 Bash 명령을 문자열로 표현하여 실행할 수 있습니다. 이 학습에서 eval
명령은 여러 Bash 기본 제공 작업을 실행하고 일련의 변수를 생성합니다.
이 강의를 읽은 후 사용자는 eval
명령을 더 잘 이해하고 다양한 응용 프로그램에 활용할 수 있습니다.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn