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