Python에서 문자열이 명령문을 나타내는 경우 이를 실행하려면 를 사용해야 합니다 eval
.
Bash에서는 왜 상황이 다른가요?
$ cmd="ls"
$ $cmd
a.out company.png
답변1
Python과 Bash는 완전히 다른 언어입니다. Python의 주요 목적은 외부 프로그램 실행 기능을 추가하여 내부 명령문을 실행하는 것입니다. 셸의 주요 목적은 일부 추가된 제어 구조와 내부 명령을 사용하여 외부 프로그램을 실행하는 것입니다. Bash는 원래 셸보다 내부 기능이 더 많지만 여전히 호환성을 유지합니다.
셸의 기능 중 하나는 변수를 정의하고 나중에 명령에서 확장할 수 있다는 것입니다. 기본적으로 쉘은 모든 명령문에 대해 Python과 유사한 것을 암시적으로 사용하는 것으로 생각할 수 있습니다 eval
. 물론 차이점도 있습니다.
eval
일반적인 처리 및 교체 수준이 충분하지 않고 추가 수준이 필요한 경우 유용하지만 위험할 수도 있는 셸 명령도 있습니다. 이는 라인의 나머지 부분을 평가하고 정상적인 교체를 위해 결과를 쉘에 제공합니다. 이 기능을 더 잘 이해하고 실제로 필요할 때까지는 잊어버리는 것이 가장 좋습니다.