Почему правильный сценарий оболочки выдает обернутое / усеченное / поврежденное сообщение об ошибке? [Дубликат]
На этот вопрос уже есть ответ здесь:
Являются ли сценарии оболочки чувствительными к кодированию и окончанию строк? 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
Почему это происходит, и как мне это исправить?