2014-02-08 3 views
3
#!/bin/sh 
STR="-e" 
echo ${STR} 
STR="${STR} HI" 
echo ${STR} 

위의 스크립트는 출력합니다 "-e"쉘 스크립트는

HI 

빈 줄 끝. 이것이 왜, "-e"로 시작하는 문자열을 만들 수 있습니까?

답변

5

echo은 유능한 UNIX 시민이 아닙니다. 제대로 동작했다면 echo -- "$STR"을 쓸 수 있으며 --은 옵션 목록의 끝을 나타냅니다. 하지만 그렇지 않아요.

가장 좋은 방법은 대신 printf을 사용하는 것입니다.

printf '%s\n' "$STR" 
+0

+1; 다른 말로하면 :'echo '에 전달 된 인자가 유효한 옵션처럼 보이게되는 하나 이상의 토큰으로 시작한다면 -'e'는'echo'와 같이 해석 할 것입니다. – mklement0

관련 문제