文字列から最後の文字を取得できません

文字列から最後の文字を取得できません

私はbashとLinuxに最初に触れましたが、私が選択した行の最後の文字が空ではないのになぜ空なのかわかりません。私のコードでは、最後の2行目の最後の文字==""かどうかをテストしています。その場合は「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>

「クリーンアップ」(たとえば、スペースを削除)するには、別の関数を作成して入力を処理することをお勧めします。

関連情報