Programing

쉘 스크립트에서 줄 바꿈이없는 'echo'

lottogame 2020. 2. 15. 19:34
반응형

쉘 스크립트에서 줄 바꿈이없는 'echo'


echo내 스크립트에 문제가 있습니다.

echo -n "Some string..."

인쇄물

-n Some string...

다음 줄로 이동합니다. 콘솔에서 줄 바꿈없이 올바르게 작동합니다.

Some string...

echo동작이 다른 여러 버전의 명령이 있습니다. 분명히 스크립트에 사용 된 쉘은 인식하지 못하는 버전을 사용합니다 -n.

printf명령에는 훨씬 더 일관된 동작이 있습니다. echo와 같은 간단한 것들 echo hello에는 좋지만 printf더 복잡한 것을 사용 하는 것이 좋습니다 .

어떤 시스템을 사용하고 있으며 스크립트에서 사용하는 쉘은 무엇입니까?


bash "echo"라는 "내장"명령이 있습니다.

$ type echo
echo is a shell builtin

또한 적절한 실행 파일 인 "echo"명령 (즉, /bin/echo해석 echo및 실행과 반대로 쉘 포크 및 execs )이 있습니다.

$ ls -l /bin/echo
-rwxr-xr-x 1 root root 22856 Jul 21  2011 /bin/echo

하나의 동작 echo에의 WRT \c와는 -n다릅니다. 가장 좋은 방법 printf은를 사용하는 것입니다. 이것은 내가 본 4 가지 * NIX 맛에서 사용할 수 있습니다.

$ printf "a line without trailing linefeed"
$ printf "a line with trailing linefeed\n"

함께 시도

echo -e "Some string...\c"

예상대로 작동합니다 (귀하의 질문에서 알 수 있듯이).

이 정보는 man페이지 에서 얻었습니다 . man페이지는 또한 쉘에 자체 버전이있을 수 있으며 자체 버전이 echo있는지 확실하지 않습니다 bash.


"읽기"와 같은 다른 명령과 함께 if 내부에서 echo를 사용하면 설정을 무시할 수 있으며 어쨌든 새 줄로 넘어갑니다.


단지에 대한 가장 인기있는 리눅스 Ubuntu 및 그것입니다 bash:

  1. 어떤 쉘을 사용하고 있습니까? 대부분 아래 작품 그렇지 않으면 이것을보십시오 :

    echo $0

  2. 위가 인쇄 bash되면 아래가 작동합니다.

    printf "hello with no new line printed at end"
    또는
    echo -n "hello with no new line printed at end"


쉘 스크립트를 작성할 때 항상 첫 줄을 #! / usr / bin / env bash로 넣으십시오. 이 쉘은 이스케이프 시퀀스를 생략하거나 조작하지 않습니다. ex echo "첫 번째 \ n 줄입니다"인쇄 이것은 첫 번째 \ n 줄입니다.

참고 URL : https://stackoverflow.com/questions/11193466/echo-without-newline-in-a-shell-script



반응형