确保 bash 变量末尾包含换行符

确保 bash 变量末尾包含换行符

我想确保变量末尾包含换行符。我能做些什么?

答案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输出。该换行符不是文件基名的一部分,它只是为了确保输出是一行。file<newline>

在:

var=$(basename -- "$file")

命令替换会删除该换行符。事实上,它剥离了全部尾随换行符可能会被视为一个错误,因为它还会删除属于文件基名一部分的换行符。

相关内容