変数の末尾に改行文字が含まれていることを確認したいと思います。どうですか?
答え1
case $var in
(*$'\n') echo ends in a newline;;
(*) echo does not end in a newline;;
esac
変数の値が改行文字で終わる場合は非常にまれです。
通常、これを削除してから印刷するときに再度追加します。
たとえば、
echo "$var"
内容を印刷し$var
(バックスラッシュで始まらず、-
バックスラッシュを含まないと仮定)、その後に改行文字が続きます。または明示的にこれを行います:
printf '%s\n' "$var"
存在する:
basename /path/to/file
basename
出力。この改行文字は、ファイルの基本名の一部ではなく、出力が1行だけであることを確認するためのものです。file<newline>
存在する:
var=$(basename -- "$file")
コマンド置換は改行文字を削除します。事実は剥がれています。みんな末尾の改行は、ファイルの基本名の一部である改行も削除するため、エラーと見なすことができます。