Я скопировал ваш код из вопроса на Mac (copy'n'paste) и запустил файл с:
bash -n -v x.sh
Фактически, я сделал это дважды;в первый раз я убедился, что в конце файла был символ новой строки, а во второй раз я убедился, что символа новой строки нет.И Bash был счастлив оба раза.
Это указывает на то, что проблема не в видимых символах;в файле есть невидимые символы, вызывающие горе.Вам, вероятно, понадобится изучить файл с помощью инструмента, такого как od -c
, чтобы найти символ, который вызывает проблему.
Кроме того, FWIW, команда readlink
на моем Mac дает:
$ readlink -f $0
readlink: illegal option -- f
usage: readlink [-n] [file ...]
$
Версия Linux readlink
занимает -f
.Это не команда POSIX, поэтому не существует стандарта de jure , на который можно ссылаться.