-e 옵션을 사용한 에코가 명령줄과 sh 스크립트 내에서 다르게 동작하는 이유는 무엇입니까?

-e 옵션을 사용한 에코가 명령줄과 sh 스크립트 내에서 다르게 동작하는 이유는 무엇입니까?

LinuxMint 17.2, 커널 4.4.0-97-일반을 사용합니다. 나는 다음을 포함하는 작은 TestEcho.sh 스크립트를 만들었습니다.

#!/bin/bash
echo -e "\e[1;31m Text in Color \e[0m\n"
for code in {33..43}; do echo -e "\e[38;05;${code}m $code: Text in Color"; done ; echo "";

echo -e명령줄에서 명령을 실행하면 예상된 출력이 제공됩니다 . 즉, 이스케이프 코드를 해석하고 텍스트를 색상으로 표시합니다.

.sh 스크립트 내의 동일한 명령은 옵션을 echo무시 하고 리터럴 텍스트로 -e표시됩니다 . -e또한 for 루프도 손상된 것 같습니다. 이것이 원인입니까 echo -e? 그리고 더 중요한 것은 스크립트를 수정하는 방법입니다.

답변(George Vasiliou에게 감사드립니다): bash대신 에 스크립트를 실행하세요sh

$ bash ~/Download/TestEcho.sh

cmdline의 echo -e와 sh 스크립트 내

답변1

bash와 sh는 다른 종류의 쉘입니다. bash는 sh보다 최신이고 더 똑똑합니다. 스크립트에서 쉘을 #!/bin/bash사용하여 실행된다는 의미를 작성합니다 bash. 그러나 사용하면 쉘을 sh ~/Download/TestEcho.sh사용하여 실행됩니다 sh.

관련 정보