스크립트를 구현하는 동안 다음과 같은 문제가 발생합니다. 명령의 다중 행 결과를 변수에 넣을 때 내 다중 행 문자열의 마지막 (빈) 행이 사라지는 것 같습니다., 변수에 저장할 때 왜 내 멀티 라인 문자열의 마지막 (비어있는) 줄이 사라지나요?
이 줄은 "비어 있습니다". 그러나 DB에 저장된 코드 블록을 연결하고 "\ n"문자를 사람이 읽을 수있는 문자열에 포함하기 때문에 포함 된 캐리지 리턴을 잃을 수 없습니다 ...
이test="A
B
";
test2=`echo "$test"`;
echo "||$test2||";
이
||A
B||
를 반환 : 나는 "\ n을"의 일부를 분실 한 경우, 나는 내 문제를 설명하기 위해 코드를 내 코드 들여 쓰기의 일부) 여기
입니다 잃게됩니다 w ...> 마지막 (빈) 라인 사라지고 캐리지 리턴 따라서 내 사람이 읽을 수있는 코드에서 누락 된 -
||A
B
||
는 : 하일 나는 기다리고 있었다. 내 여러 줄 문자열의 마지막 줄이 비어있을 때
이 문제는 ... 발생
이 마지막 줄이 사라 왜- 을 알고 계십니까?
- 마지막으로 빈 줄이 여러 줄 문자열 변수에 저장되도록하려면 어떻게해야합니까? 전체 프로세스가 아니라이기 때문에 나는 물론 가장 쉬운 솔루션을
test2="$test";
을 사용할 수 없습니다
참고 :
test="^A\n\nB\n^"
test2="`echo "$test" | sed -e 's/\^//g'`";
그러나 나는이 문제를 내가 할 수있는 최대한 단순화하기 위해 노력했다. 대신 변수에 echo
의 출력을 할당에서 발생하는 문제를 해결하기 위해 노력
명령 치환 항상 개행 문자를 후행 트림 - - 디자인과 사양에 맞습니다. 그렇지 않으면,'foo = $ (echo foo)'는 문자열'foo'를 포함하지 않을 것이지만, 줄 바꿈 줄을 가질 것입니다 - 그것은 사람들을 혼란스럽게합니다. –
BTW, ksh의 특정 버전은 무엇입니까?서로 다른 호환되지 않는 구현이 많이 있습니다. –
@CharlesDuffy 사용중인 ksh 버전을 찾으려고 시도한 명령이 없습니다 ... "ksh --version", "echo $ {. sh.version}"& "echo $ KSH_VERSION"을 시도했습니다. 내 ksh 버전을 식별 할 수있는 다른 가능성을 알고 있다면 매우 흥미 롭습니다 .-) – Seba991