에코가 변수의 올바른 값을 인쇄하지 않습니다.

에코가 변수의 올바른 값을 인쇄하지 않습니다.

내 쉘 스크립트에 런타임에 올바르게 확인되지 않는 변수가 있습니다.

입력하다

#!/bin/sh
SERVER_ERL_ARGS="+K true +A30 +P 1048576 \
     -kernel inet_default_connect_options [{nodelay,true}]"
echo ${SERVER_ERL_ARGS}

산출:

+K true +A30 +P 1048576 -kernel inet_default_connect_options a

이 동작의 이유와 이를 해결하려면 어떻게 해야 합니까?

답변1

변수 확장을 참조하지 않았으며 echo현재 디렉터리에 이름이 지정된 파일이 있습니다.a

파일 이름 와일드카드 패턴처럼 작동하며 [{nodelay,true}]이름에 단일 문자가 포함된 모든 파일과 일치합니다. 귀하의 경우 [...]현재 디렉토리에서 호출되는 파일 이름과 일치합니다.a

따라서 변수를 참조하되 다음을 사용하는 것이 더 좋습니다 printf.

printf '%s\n' "$SERVER_ERL_ARGS"

또한 확장이 확장 바로 뒤의 문자가 변수 이름에서 유효한 문자열의 일부가 아닌 한 모든 경우에 ${variable}정확히 동등한 것이 있다는 점에 유의하십시오 .$variable"${variable}x"

또한보십시오:

관련 정보