명령을 -n
사용하여 인쇄하려고합니다 echo
. 그러나 단순히 입력 echo -n
하면 개행 만 표시되고 표시되지 -n
않고 개행을 발행합니다.
getopt
명령 줄을 구문 분석하기 위해 (???)를 사용하지 않기 때문에
명령을 -n
사용하여 인쇄하려고합니다 echo
. 그러나 단순히 입력 echo -n
하면 개행 만 표시되고 표시되지 -n
않고 개행을 발행합니다.
getopt
명령 줄을 구문 분석하기 위해 (???)를 사용하지 않기 때문에
답변:
문제 는를 인수로 echo
해석한다는 -n
것입니다. 기본 bash 구현에서 (from help echo
) 을 의미합니다 .
-n do not append a newline
그 문제를 해결하는 방법에는 여러 가지가 있습니다.
다른 캐릭터를 포함시켜 옵션이 아닌 무언가로 만드십시오. 예를 들어, echo
로 개행을 인쇄하지 말고 -n
백 슬래시 이스케이프를 해석 -e
하고 개행을 명시 적으로 추가하도록 지시 하십시오.
$ echo -ne '-n\n'
-n
또는 공백 만 포함
$ echo " -n"
-n
그러나 원하지 않는 공간을 추가합니다.
인쇄 할 수없는 문자를 사용하십시오. 여기. 백 스페이스를 사용하고 있습니다 ( \b
)
$ echo -e "\b-n"
-n
이것은 또한 당신이 원하지 않는 여분의 캐릭터를 추가합니다.
속임수 사용
$ echo n- | rev
-n
이 rev
명령은 단순히 출력을 반대로 인쇄합니다.
작업에 적합한 도구 사용
$ printf -- '-n\n'
-n
grep '^-n'
. pritnf
정말 갈 길입니다.
printf
어쨌든 더 낫지 만 문제는 단지 관련 echo
입니다.
echo -e "-n\c"
정확한 일을한다.
\c
추가 출력을 억제 함
때로는 올바른 도구를 사용하는 것이 좋습니다. printf
대신 사용할 수 있습니다 .
% printf "-n\n"
-n
echo
동안, printf
더 나은 표준화됩니다 .
이 명령을 사용할 수 있지만 추가 공간이 추가됩니다.
echo -e "\r-n"
이것은 일종의 해킹입니다.
-e
백 슬래시 명령 기호를 활성화합니다.
\r
캐리지 리턴입니다.
실제로 \
유효한 문자는 문자열의 어느 곳에서나 수행됩니다.
로 유효한 것을 확인할 수 있습니다 help echo
.
echo "-n"
-n
의 매개 변수로 사용 되기 때문에 작동하지 않습니다 echo
.
PS 최고의 솔루션 IMHO는
echo -e "-n\c"
추가 문자를 추가하지 않습니다 .
echo -e "-n\n"
줄 바꿈과 동일하지만 인쇄합니다.
-n
유효 -nfoo
하며 인쇄되지 않습니다.
man echo
도 있습니다. 그러나 help
조금 낫습니다.
/bin/echo
완전히 다른 것이고 echo
bash에서 실행할 때 쉘에 따라 상당히 다른 내장 기능을 얻습니다.
너희들은 정말로 그것을 너무나 생각하고있다.
echo -e \\055n
또는 후행 줄 바꿈없이
echo -en \\055n
printf "-n\n"
지나친는?
/bin/echo
하고 적어도 다음 과 같이 호출되는 경우 상대적으로 이식성이 echo -e "\055n"
@AB의 답변을 확장하기 위해 사용할 수있는 유일한 휴대용 방법 echo
은과 같은 옵션을 사용하지 않는 것 -n
입니다. printf
가능한 경우 대신 사용하십시오. 이 참조 페이지에서 자세한 내용을 제공하고, 잘 때와 방법을 설명 echo
하고 printf
사용해야합니다 :
현재 echo (1)은 플래그를 생략하고 시퀀스를 이스케이프하는 경우에만 이식 가능합니다. 일반 텍스트 이상이 필요한 경우 printf (1)를 대신 사용하십시오.
Bash 스크립트에서 다음을 실행할 수 있습니다.
echo -n -
echo n
또는 interacive shell에서 :
echo -n - ; echo n
이 echo
말이지 -
문자와 n
문자.
-pilot6@Pilot6:~$
. 두 번째 출력 n
.
&&
이 답변이 잘못되었다고 말할 수는 없습니다 .
당신은 실행할 수 있습니다
printf -n;echo
Busybox Ash에서 테스트
ash
는 Almquist Shell의 이름입니다.
echo -n -- -n
작동 합니까 (테스트하기 편리한 Linux 상자가 없습니까)?