Bash 명령 주입

Bash 명령 주입

이 bash 스크립트( )를 살펴보십시오 test.sh.

echo "START"
echo $1
echo "END"

이것이 스크립트를 시작하는 방법입니다.

./test.sh `ls`

내가 이해하고 싶은 것은 ls명령이 실행될 때입니다.

ls실행되었다고 생각하시나요 ?앞으로 test.sh호출되거나 라인 2의 스크립트 내에서 실행된다고 ls생각 하는 것입니다.test.sh

내가 원하는 것은 ls호출이 내부적으로 트리거되는지 확인하는 것입니다 test.sh. 어떻게 해야 하나요?

답변1

ls이전에 실행되었습니다 test.sh. 이는 다음 중 하나인 명령 대체의 결과로 실행됩니다.단어 확장셸 실행의 목적은 명령에 제공되는 최종 인수 집합을 구성하는 것입니다( test.sh이 경우에는 명령을 실행하기 전에 모두 완료해야 합니다).

test.sh자체적으로 실행되어야 하는 명령을 제공하려면 명령 대체를 건너뛰십시오. test.sh로 변경

echo "START"
"$1"
echo "END"

를 사용하여 호출합니다 ./test.sh ls.

관련 정보