-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것 같습니다 . 또한 for 루프가 손상된 것 같습니다. 무엇이 이것의 원인입니까 ? 더 중요한 것은 스크립트를 수정하는 방법입니다.-e-eecho -e

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

$ bash ~/Download/TestEcho.sh

cmdline의 echo -e 및 sh 스크립트의 echo -e

답변1

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

관련 정보