*.sh 파일에 저장하면 명령이 다르게 동작합니다.

*.sh 파일에 저장하면 명령이 다르게 동작합니다.

이 질문에 대한 답을 찾을 수 없습니다. 아마도 여러분 중 한 분이 저를 도와주실 수 있을 것입니다. :)

나는 이것을 자동화하는 데 도움이 되는 몇 가지 쉘 스크립트를 작성했고 실제로 작동했습니다. 그러나 내 에 컬러 텍스트를 추가하는 것은 작동하지 않습니다 echo. 터미널에 직접 명령을 입력하면 작동하지만 명령을 *.sh 파일에 넣으면 작동하지 않습니다.

질문

콘텐츠foo.sh:

echo "\n\e[1;37mHello World\e[0m\n"

누구든지 문제가 무엇인지 나에게 설명해 줄 수 있습니까? 아, 그리고 그게 중요하다면 저는 zsh를 사용하고 있습니다.

미리 감사드립니다 :)

고쳐 쓰다

분명히 내용이 나오면foo.sh예:

echo $'\n\e[1;37mHello World\e[0m\n'

나는에서 답을 찾았다http://wiki.bash-hackers.org/syntax/quoting, netmonk의 답변 덕분에. 그러므로 나는 그의 대답을 정답으로 받아들이겠다. 고마워요 형 :)

답변1

파일을 저장할 때 sh다음과 같이 모든 항목 앞에 "쉘" 선언 줄을 추가할 수 있습니다.

#!/bin/sh

# the code

셸에서 테스트할 때와 동일한 결과를 얻으려면 이 줄을 셸을 나타내는 줄로 변경하세요.

답변2

네, 이게 중요해요! echo 명령은 다를 수 있습니다. 쉘 프로그램 내에 내장된 명령이거나 별도의 독립적인 명령입니다.

이렇게 하면 zsh에서 사용하는 에코가 SH 쉘 스크립트에서 호출하는 에코와 다르다고 생각할 수 있습니다! :)

-e스크립트에 에코를 추가 해야 합니다 !

관련 정보