В Linux - проверьте, есть ли пустая строка в конце файла , в некоторых сообщениях для сравнения символов используются [[ ]]
и ==
.
Я быЯ хотел написать однострочную команду для обнаружения, если в EOF нет новой строки, и я столкнулся с этой маленькой проблемой.
В выводе echo
есть \n
в конце.
$ echo echo | od -c
0000000 e c h o \n
0000005
$ echo -n echo | od -c
0000000 e c h o
0000004
Если я соединю [[ ]]
и ==
вместе, то я не получу ожидаемый результат.
$ [[ `echo echo | tail -c1` == "\n" ]] && echo true
$ [[ `echo echo | tail -c1` != "\n" ]] && echo true
true
$ [[ `echo -n echo | tail -c1` != "\n" ]] && echo true
true
Как показано od -c
, вывод echo echo | tail -c1
равно \n
, а [[ "\n" == "\n" ]] && true
вернет true
, поэтому я ожидаю, что первая команда выдаст true
.Тем не менее, почему он оценивается как пустая строка?
Спасибо за чтение!