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
-e
echo -e
답변bash
(George Vasiliou에게 감사드립니다): 대신 스크립트를 실행하세요 .sh
$ bash ~/Download/TestEcho.sh
답변1
bash와 sh는 다른 유형의 쉘입니다. bash는 sh보다 최신이고 더 똑똑합니다. 스크립트에서 작성하는 내용은 셸을 사용하여 실행 #!/bin/bash
된다는 의미입니다 . bash
그러나 이를 사용하면 쉘을 sh ~/Download/TestEcho.sh
사용하여 실행됩니다 .sh