문자열에서 마지막 문자를 가져올 수 없습니다

문자열에서 마지막 문자를 가져올 수 없습니다

나는 bash와 Linux를 처음 접했고 내가 선택한 줄의 마지막 문자가 비어 있지 않은데 왜 비어 있지 않은지 잘 모르겠습니다. 내 코드에서는 끝에서 두 번째 줄의 마지막 문자 == ""인지 테스트하고 있습니다. 그렇다면 "yes"를 에코하고, 그렇지 않으면 "no"를 에코하고 싶습니다.

이게 내 코드야

Line=$(tail -n-2 file | head -n1)
echo "$Line"
echo "${Line: -1}"
if [ "${Line: -1}" == " " ]; then
    echo "yes";
else
    echo "no";
fi

파일에는 다음이 포함됩니다.

xxxxxxxxxxxx
xx x x xxx x
xxx xx xxx x
x x xxx xx .
xxxxxxxxxxxx

출력은 다음과 같습니다.

x x xxx xx .

yes

이 작업을 수행할 때 echo "${Line: -1}"출력이 비어 있는 이유는 모르겠지만 이 작업을 수행하면 출력이 예상됩니다.echo "$Line"

이 문제를 어떻게 해결할 수 있는지 제안해 주세요. 감사합니다.

답변1

파일 끝에 공백이 있어야 합니다. 그렇지 않으면 공백 문자가 인쇄되지 않으며 조건으로 인해 "예"가 인쇄되지 않습니다.

cat -ve <file>

아니면 다른 사람들이 쓴 것처럼

sed -n l <file>

"정리"(예: 공백 제거)하려면 별도의 함수를 만들고 입력을 처리하는 것이 좋습니다.

관련 정보