Bash에서 다음을 시도하십시오.
echo -e "hello\nworld"
그러나 개행은 인쇄하지 않습니다 \n
. 줄 바꿈을 인쇄하려면 어떻게해야합니까?
우분투 11.04를 사용하고 있습니다.
Bash에서 다음을 시도하십시오.
echo -e "hello\nworld"
그러나 개행은 인쇄하지 않습니다 \n
. 줄 바꿈을 인쇄하려면 어떻게해야합니까?
우분투 11.04를 사용하고 있습니다.
답변:
printf
대신 사용할 수 있습니다 .
printf "hello\nworld\n"
printf
보다 일관된 동작이 echo
있습니다. 동작은 echo
버전마다 크게 다릅니다.
printf %"s\n" hello world
- 너무 많은 인수가 주어지면의 printf는 형식을 다시 사용합니다
echo
을 지원하는 경우 적합합니다 -e
.
echo
, -e
나는이 대답이 있기 때문에 완벽하게 유효 생각, 그래서 그냥 출력 자체에 인쇄 echo
(우리는 특정 버전에 대해 얘기하지 않는 한) 여기에 일치하지 않습니다.
당신은 강타에 확실합니까? 네 가지 방법 모두 나를 위해 작동합니다.
echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world
echo Hello ; echo world
-e
모든 * nix OS에 param이 존재하지 않는 것
echo $'hello\nworld'
인쇄물
hello
world
$''
문자열은 ANSI C Quoting을 사용 합니다 .
형식의 단어는 특별히 취급됩니다. ANSI C 표준에 지정된대로 백 슬래시 이스케이프 문자를 바꾸어 단어를 string으로 확장합니다 .
$'string'
당신은 항상 할 수 echo ""
있습니다.
예 :
echo "Hello"
echo ""
echo "World"
echo ""
나에게 도움이되며 질문에 직접 대답하지 않아도 새 줄을 인쇄하는 것이 가장 간단한 양식이라고 생각합니다. 건배.
echo -en "\n"
.
echo
빈 줄을 얻기에 충분합니다
동료의 대본이 줄 바꿈을 인쇄하지 않는 이유를 알아 내려고 벽에서 머리를 두드리는 사람이 있다면 기회를 찾아보십시오.
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
echo $(GET_RECORDS);
위에서와 같이, 메소드의 실제 실행은 메소드 자체에있을 수있는 에코를 대체하는 에코로 랩핑 될 수 있습니다. 분명히 나는 간결성을 위해 이것을 물을 뿌렸다. 발견하기 쉽지 않았다!
그런 다음 동료에게 기능을 실행하는 더 좋은 방법은 다음과 같다고 알릴 수 있습니다.
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
GET_RECORDS;
에코의 POSIX 7
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
정의되지 않았으며 백 슬래시는 구현 정의입니다.
첫 번째 피연산자가 -n이거나 피연산자 중 하나에 <backslash> 문자가 포함 된 경우 결과는 구현 정의됩니다.
선택적 XSI 확장이없는 한.
따라서 printf
대신 다음을 사용 하는 것이 좋습니다 .
형식 피연산자는 XBD 파일 형식 표기법 [...]에 설명 된 형식 문자열로 사용됩니다.
파일 형식 표기 :
\ n <newline> 인쇄 위치를 다음 줄의 시작 부분으로 이동하십시오.
또한 Ubuntu 15.10과 대부분의 배포판 echo
은 다음과 같이 구현 됩니다.
help echo
which echo
혼동을 일으킬 수 있습니다.
간단히 입력
echo
새로운 줄을 얻기 위해
str='hello\nworld'
$ echo | sed "i$str"
hello
world
당신은 또한 할 수 있습니다 :
echo "hello
world"
이것은 스크립트 내부와 명령 줄에서 모두 작동합니다.
명령 행에서 Shift+ Enter를 눌러 문자열 내부에서 줄 바꿈을 수행하십시오.
이것은 내 macOS 및 Ubuntu 18.04에서 작동합니다.
이러한 솔루션으로 작동하지 않고 함수에서 반환 값을 가져와야하는 사람들을 위해 여기에 하나 더 입력하십시오.
function foo()
{
local v="Dimi";
local s="";
.....
s+="Some message here $v $1\n"
.....
echo $s
}
r=$(foo "my message");
echo -e $r;
이 트릭만이 bash로 작업하고있는 Linux에서 작동했습니다.
GNU bash, version 2.2.25(1)-release (x86_64-redhat-linux-gnu)
그것이 비슷한 문제를 가진 사람을 돕기를 바랍니다.
내 스크립트 :
echo "WARNINGS: $warningsFound WARNINGS FOUND:\n$warningStrings
산출:
WARNING : 2 WARNINGS FOUND:\nWarning, found the following local orphaned signature file:
내 bash 스크립트에서 방금 시도 할 때까지 나는 너에게 화를 냈다.
echo "WARNING : $warningsFound WARNINGS FOUND:
$warningStrings"
해당 점프를 삽입하려는 곳에 Enter 키를 누르십시오. 출력 결과는 다음과 같습니다.
WARNING : 2 WARNINGS FOUND:
Warning, found the following local orphaned signature file:
중괄호와 함께 에코를 사용할 수도 있습니다.
$ (echo hello; echo world)
hello
world
echo hello; echo world
때로는 공백으로 구분 된 여러 문자열을 전달할 수 있으며로 해석됩니다 \n
.
예를 들어 여러 줄 알림에 쉘 스크립트를 사용하는 경우 :
#!/bin/bash
notify-send 'notification success' 'another line' 'time now '`date +"%s"`
\n
. 프로그램에 대한 별도의 인수로 해석되며 프로그램 자체는 해당 인수를 새로운 행에 표시 할 수 있지만, 이것이 \n
어느 시점에서든 변환되어 프로그램에 전적으로 의존 한다는 것을 의미하지는 않습니다 .
이것은 나를 거기에 데려 갔다.…
outstuff=RESOURCE_GROUP=[$RESOURCE_GROUP]\\nAKS_CLUSTER_NAME=[$AKS_CLUSTER_NAME]\\nREGION_NAME=[$REGION_NAME]\\nVERSION=[$VERSION]\\nSUBNET-ID=[$SUBNET_ID]
printf $outstuff
수율 :
RESOURCE_GROUP=[akswork-rg]
AKS_CLUSTER_NAME=[aksworkshop-804]
REGION_NAME=[eastus]
VERSION=[1.16.7]
SUBNET-ID=[/subscriptions/{subidhere}/resourceGroups/makeakswork-rg/providers/Microsoft.Network/virtualNetworks/aks-vnet/subnets/aks-subnet]