Почему правильный сценарий оболочки выдает обернутое / усеченное / поврежденное сообщение об ошибке? [Дубликат]

На этот вопрос уже есть ответ здесь:

Являются ли сценарии оболочки чувствительными к кодированию и окончанию строк? 4 ответа

У меня есть сценарий оболочки с командой, которая выглядит так, как будто она должна работать, но вместо этого она завершается с нечетным завернутым / усеченным / поврежденным сообщением об ошибке. Пример:

$ ls -l myfile
-rw-r----- 1 me me 0 Aug  7 12:36 myfile
$ cat myscript 
ls -l myfile
$ bash myscript
: No such file or directory

Файл явно существует, но даже если бы я этого не сделал, я обычно получаю сообщение об ошибке:

$ ls -l idontexist
ls: cannot access idontexist: No such file or directory

Обратите внимание, как оно включает название инструментаls, строка сообщения и имя файла, а мое нет.

Вот что я получу, если попробую использоватьmysql вместо. Сообщение об ошибке выглядит так, как будто оно было упаковано, и теперь начинается с цитаты:

Command:  mysql -h myhost.example.com
Expected: ERROR 2005 (HY000): Unknown MySQL server host 'myhost.example.com' (0)
Actual:   ' (0) 2005 (HY000): Unknown MySQL server host 'myhost.example.com

А вот моя тривиальная команда ssh, которая должна работать или, по крайней мере, выдавать нормальное сообщение об ошибке, но которая вместо этого оборачивается, чтобы начинаться с двоеточия и заканчиваться странным ударом:

Command:  ssh myhost
Expected: ssh: Could not resolve hostname myhost: Name or service not known
Actual:   : Name or service not knownname myhost

Почему это происходит, и как мне это исправить?

Ответы на вопрос(1)

Ваш ответ на вопрос