내 쉘 스크립트에 런타임에 올바르게 확인되지 않는 변수가 있습니다.
입력하다
#!/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"
또한보십시오: