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