在提交subversion时你可以修改文本文件吗? 格兰特建议我阻止提交.
但是我不知道如何检查文件以换行符结尾.如何检测文件以换行符结尾?
@Konrad:tail不返回空行.我创建了一个文件,其中包含一些不以换行符结尾的文本和一个文件.这是尾部的输出:
$ cat test_no_newline.txt this file doesn't end in newline$ $ cat test_with_newline.txt this file ends in newline $
虽然我发现尾部有最后一个字节选项.所以我将你的脚本修改为:
#!/bin/sh c=`tail -c 1 $1` if [ "$c" != "" ]; then echo "no newline"; fi
甚至更简单:
#!/bin/sh test "$(tail -c 1 "$1")" && echo "no newline at eof: '$1'"
但如果你想要更健壮的检查:
test "$(tail -c 1 "$1" | wc -l)" -eq 0 && echo "no newline at eof: '$1'"
这是一个有用的bash函数:
function file_ends_with_newline() { [[ $(tail -c1 "$1" | wc -l) -gt 0 ]] }
您可以像以下一样使用它:
if ! file_ends_with_newline myfile.txt then echo "" >> myfile.txt fi # continue with other stuff that assumes myfile.txt ends with a newline