![변동 인플레이션을 방지하는 방법은 무엇입니까?](https://linux55.com/image/202619/%EB%B3%80%EB%8F%99%20%EC%9D%B8%ED%94%8C%EB%A0%88%EC%9D%B4%EC%85%98%EC%9D%84%20%EB%B0%A9%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
주어진 첫 번째 인수를 인쇄하는 간단한 bash 스크립트가 있습니다.
#!/bin/bash
echo $1
이 스크립트를 실행하면 ./filename.sh $PATH
PATH 변수의 모든 내용이 인쇄됩니다. "$PATH" 문자열을 표시하고 싶습니다.
나는 그것을 시도했지만 echo "$1"
같은 방식으로 작동합니다.
해결책이 있나요?
답변1
아니요. 스크립트를 시작하기 전에 변수가 셸에 의해 확장되므로 스크립트는 변수를 볼 수 없고 변수의 내용만 볼 수 있으므로 해결 방법이 없습니다.
그러나 간단한 해결책이 있습니다. 변수는 작은따옴표로 확장되지 않으므로 변수를 해당 값 대신 문자열로 전달하려면 해당 변수를 인용하면 됩니다.
$ ./filename.sh '$PATH'
$PATH
그러나 스크립트에서 변수도 참조해야 합니다.
#!/bin/bash
echo "$1"
이 특별한 경우에는 아무런 차이가 없지만좋은 연습그리고좋은 습관을 길러야 한다.