2015-01-11 3 views
0

Restore_DB.sh: -«/ бен/Баш^M: плохой переводчик: Нет такого файла или каталога» ошибка при выполнении Баш скрипт хрон

#!/bin/bash 
mysql -u user -ppassword DB_name < /home/A/B/SQL_File.sql 

Я использовал выше код для восстановления базы данных MySQL из хрон, но я получаю ошибку сильфона

/usr/local/cpanel/bin/jailshell: /home/A/B/Restore_DB.sh: /bin/bash^M: bad interpreter: No such file or directory 

Это команда хрон я использовал: -

/home/A/B/Restore_DB.sh 
+1

возможно дубликат [./configure:/bin/ш^М: плохой переводчик] (HTTP://stackoverflow.com/questions/2920416/configure-bin-shm-bad-interpreter) –

ответ

2

его выглядит как проблема с различными кодировками конца строки на unixoid и MS-Windows, как системы.

Используйте строку, заканчивающуюся \n, которая является родной для unixoid систем, а не для стиля MS-Windows. Этот символ содержит дополнительный символ, который обычно отображается так, как вы видите в сообщении об ошибке (^M).

Вы можете более подробно ознакомиться с рассматриваемой линией, используя hexeditor. Это позволяет вам точно видеть, какие символы непечатаемых используются внутри строки.

+0

Не могли бы вы привести пример использования \ n? –

+0

Просто используйте нормальный 'Return', который создает линию. Вам просто нужно убедиться, что вы сказали редактору использовать обычные разрывы строк unixoid (стиль unix). Или используйте некоторую утилиту для удаления, как это предлагал @stefreak. Хотя это звучит как накладные расходы на меня, учитывая, что вы просто хотите напечатать строку :-) Или, как упоминалось выше, используйте hexeditor. Это позволяет как проверять _and_ для изменения строки. Вы можете легко обнаружить и удалить оскорбительного персонажа. Он отображается следующим образом: 0x10 0x13. Здесь 0x10 - '\ n', а 0x13 -' \ r', которого вы там не хотите. – arkascha

+0

Спасибо! Это сработало для меня! –

5

Try если dos2unix может исправить файл:

$ dos2unix /home/A/B/Restore_DB.sh 

Если dos2unix еще не существует, вы можете установить его с помощью менеджера пакетов вашего дистрибутива.

Проблема заключается в кодировке новой строки, Windows/DOS кодирует новые строки иначе, чем Unix.

  • Unix символ новой строки: \n (только линия подача символов)
  • Windows, символ новой строки: \r\n (2 символов, возврат каретки и перевод строки)

См https://en.wikipedia.org/wiki/Newline#Representations

0

yum install dos2unix

работает как шарм !!!!

+2

Хотя это ведет к правильному пути (но откуда вы знаете, что 'yum' является правильным инструментом управления пакетами для отправителя?), немного больше объяснений (причины и исправления) было бы полезно. –

2

Я просто побежал в это на OS X и заметил dos2unix доступен как заваривать формуле:

brew install dos2unix