개행은 변수에 있습니다. LS=$(ls -1)
변수 LS
를 출력으로 설정합니다 ls -1
( ls
출력이 터미널로 갈 때를 제외하고 와 동일한 출력을 생성합니다 ). 마지막 줄 바꿈.
문제는 값을 인쇄 할 때 줄 바꿈을 제거한다는 것입니다. 쉘 스크립트에서 $LS
"변수의 값"을 의미하는 것이 아니라 "의 값을 LS
취하여 LS
이를 IFS
단어로 나누고 각 단어를 글로브 패턴으로 해석"을 의미합니다. 의 값을 얻으려면 LS
을 쓰거나 "$LS"
더 일반적으로 $LS
큰 따옴표 를 넣으 십시오.
echo "$LS"
의 값을 출력 LS
백 슬래시 문자를 해석하고,로 시작하는 몇 가지 값을 제외하고 어떤 조개를 제외하고 -
.
printf "$LS"
LS
퍼센트 나 백 슬래시 문자를 포함하지 않고 (대부분의 구현에서)로 시작하지 않는 한 값을 인쇄합니다 -
.
값을 LS
정확하게 인쇄하려면을 사용하십시오 printf %s "$LS"
. 끝에 줄 바꿈을 원하면을 사용하십시오 printf '%s\n' "$LS"
.
참고 $(ls)
일반적으로하지 않습니다, 현재 디렉토리에있는 파일의 목록입니다. 파일 이름을 충분히 길들인 경우에만 작동합니다. 파일 이름 목록 (점 파일 제외)을 가져 오려면 와일드 카드를 사용해야합니다 *
. 결과는 문자열이 아닌 문자열 목록이므로 문자열 변수에 할당 할 수 없습니다. files=(*)
쉘을 지원하는 쉘에서 배열 변수 를 사용할 수 있습니다 (ksh93, bash, zsh).
자세한 내용 은 쉘 스크립트가 공백 또는 기타 특수 문자에서 질식하는 이유는 무엇입니까?를 참조하십시오 .
printf "%s\n" $LS
하십시오.