Не работает скрипт

На SUSE 11.2 ES не работает скрипт:

#!/bin/bash
db_dir=/srv/fbdata
db_name=mydata.fdb
fb_dir=/opt/firebird/bin
log=/var/log/fb_stat.log
user=SYSDBA
pass=masterkey
b_date=`date +%F`
b_time=`date +%H-%M-%S`
echo "***************************************************************************************" >> $log
echo "$b_time $b_date Run $db_name database check statistics" >> $log
$fb_dir/gstat -h $db_dir/$db_name -USER $user -PAS $pass &> $log
if  $? -eq 0 ] ; then
  echo "$b_time $b_date Sucseffuly." >> $log
else
  echo "$b_time $b_date Error !!!" >> $log
fi
echo "$b_time $b_date The End" >> $log

Делаю

  1. chmod +rx fbgstat
  2. bash -x fbgstat

Выдает

  • db_dir=$’/srv/fbdata\r’
  • db_name=$‘mydata.fdb\r’
  • fb_dir=$’/opt/firebird/bin\r’
  • log=$’/var/log/fb_stat.log\r’
  • user=$‘SYSDBA\r’
  • pass=$‘masterkey\r’
    ++ date +%F
  • b_date=$‘2011-10-10\r’
    ++ date +%H-%M-%S
  • b_time=$‘13-41-56\r’
  • echo ‘***************************************************************************************’
    database check statistics’
  • $’/opt/firebird/bin\r/gstat’ -h $’/srv/fbdata\r/mydata.fdb\r’ -USER $‘SYSDBA\r’ -PAS $‘masterkey\r’
    fbgstat: line 19: syntax error: unexpected end of file

Может где косяк :question: ? кто поможет разобраться?
Заранее спасибо.

bash 3.2.48(1)-release

Во-первых, название темы надо давать осмысленное.
Во-вторых, скрипт писали в какой ОС?

Извините, поспешил. Не нахожу, как отредактитовать топик.

FB-SLES11:/tmp # cat /etc/release
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 0
LSB_VERSION=“core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64”
cat: /etc/lsb-release.d: Is a directory

там еще в коде должно быть в конце
exit 0.

Спасибо.

Вообще-то я имел ввиду систему, в которой писался скрипт. Я вижу виндовые переводы строки в конце: “\r”. И пустая строка должна быть в конце файла.

Да. Скрипт писался в WinXP. Нужно было написать скрипт проверки БД Firebird. Программирование скриптов начал изучать недавно (на пред. неделен). Я начал читать про BASH, нашел скрипт бэкапа в инете и набросал тестовый скрипт на его основе для получения статистики БД, с элементами ветвления - и вот результат.
Я пользуюсь WinSCP для файлового доступа, т.к. сервер у нас проинсталлирован без граф.“прибамбасов”, а скрипт запускаю в терминальном режиме (Putty).
А какой редактор посоветуете для вин-систем, чтобы можно было переносить тексты на NIX-системы? Или есь удобные утилиты по редактированию текстов в самой NIX-системе?

Все. В notepade (WinXP) сохранил в кодировке UTF-8 и “залил” на сервер. Скрипт отработал на ура.
Спасибо за замечание на счет системы (имелось в виду ОС), в которой набирался скрипт.

А какой редактор посоветуете для вин-систем, чтобы можно было переносить тексты на NIX-системы? Или есь удобные утилиты по редактированию текстов в самой NIX-системе?

Для Win поищите редактор, чтобы была опция установки способа перевода строки. Для информации: Перевод строки — Википедия](Перевод строки — Википедия)
Из консольных редакторов Linux самый удобный для неподготовленного человека это редактор в файловом менеджере MC. Можно вызвать непосредственно командой ‘mcedit file.name’. Ещё есть joe, но в нём посложнее.

Устал уже бороться на работе с подобными ошибками…
Используйте Notepad++ - справа внизу он указывает текущий формат: DOS/WINDOWS или UNIX, если видим первый вариант, то идем в Правка → Конверсия конца строки → Преобразовать в UNIX-формат.

А ещё можно vim или emacs с помощью cygwin под виндой пускать :wink: