나는 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>
"정리"(예: 공백 제거)하려면 별도의 함수를 만들고 입력을 처리하는 것이 좋습니다.