변동 인플레이션을 방지하는 방법은 무엇입니까?

변동 인플레이션을 방지하는 방법은 무엇입니까?

주어진 첫 번째 인수를 인쇄하는 간단한 bash 스크립트가 있습니다.

#!/bin/bash
echo $1

이 스크립트를 실행하면 ./filename.sh $PATHPATH 변수의 모든 내용이 인쇄됩니다. "$PATH" 문자열을 표시하고 싶습니다.

나는 그것을 시도했지만 echo "$1"같은 방식으로 작동합니다.

해결책이 있나요?

답변1

아니요. 스크립트를 시작하기 전에 변수가 셸에 의해 확장되므로 스크립트는 변수를 볼 수 없고 변수의 내용만 볼 수 있으므로 해결 방법이 없습니다.

그러나 간단한 해결책이 있습니다. 변수는 작은따옴표로 확장되지 않으므로 변수를 해당 값 대신 문자열로 전달하려면 해당 변수를 인용하면 됩니다.

$ ./filename.sh '$PATH'
$PATH

그러나 스크립트에서 변수도 참조해야 합니다.

#!/bin/bash
echo "$1"

이 특별한 경우에는 아무런 차이가 없지만좋은 연습그리고좋은 습관을 길러야 한다.

관련 정보