Помогите разобраться с BASH-скриптом

12
[Удален]
958

Есть задача написать bash-скрипт, который по запуску будет выполнять конвертирование видео. На основе этого скрипта "написал" такой скрипт:


#! /bin/bash

# folder_monitor.sh
# This is a daemon shell script for monitoring video input directory.
#

#определяем значения параметров по умолчанию
SRC_DIR=/var/www/vhosts/domain.com/tmp
PARAMS='-ovc lavc -lavcopts vcodec=flv:keyint=50:vbitrate=300:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=480:360 -of lavf -oac mp3lame -lameopts abr:br=64 -srate 22050'
OUTPUT_FORMAT='flv'
USER_FOLDER="/var/www/vhosts/domain.com/httpdocs/upload/video"

# получаем параметры
while getopts ":s:h:p:u:" optname
do
case $optname in
"u")
USER_FOLDER="$OPTARG"
;;
"p")
PARAMS="$OPTARG"
;;
"s")
SRC_DIR="$OPTARG"
;;
"h")
echo "-h - help"
echo "-p - command line params for mencoder"
echo "-u - path to user folders"
echo "-s - source dir"
exit 0;
;;
*)
echo "Unknown parameter or option error with option - $OPTARG"
exit 1;
;;
esac
done

#запускаем в фоне команды
(echo "Converting $FILE..."

#кодируем видео
mencoder ${SRC_DIR}/${FILE} -o "${SRC_DIR}/${FILE}.${OUTPUT_FORMAT}" ${PARAMS}
#записали метаинформацию для плеера
flvtool2 -UP "${SRC_DIR}/${FILE}.${OUTPUT_FORMAT}"
#удаляем исходный файл
rm ${SRC_DIR}/${FILE}
#и копируем сконвертированный файл в папку пользователя
mv "${SRC_DIR}/${FILE}.${OUTPUT_FORMAT}" "${USER_FOLDER}/${FILE}.${OUTPUT_FORMAT}"
wget -O /dev/null -q http://domain.com/action/upload_success/?file=${FILE}

done

Залил в папку /usr/local/daemon/folder_monitor.sh

Пытаюсь выполнить, сервер выдает ошибки:


[root@node ~]# bash /usr/local/daemon/folder_monitor.sh
: command not foundolder_monitor.sh: line 2:
: command not foundolder_monitor.sh: line 6:
: command not foundolder_monitor.sh: line 12:
/usr/local/daemon/folder_monitor.sh: line 16: syntax error near unexpected token'`in
'usr/local/daemon/folder_monitor.sh: line 16: `case $optname in

Подскажите, что делаю не так?

Да, и скрипт, на основе которого делал этот, также не работает :)

A5
На сайте с 06.08.2006
Offline
46
#1

А bash есть на сервере. Может он в другом каталоге.

А что пишет which bash?

[Удален]
#2
Art569:
А что пишет which bash?

[root@node ~]# which bash

/bin/bash

A5
На сайте с 06.08.2006
Offline
46
#3

Проверил у себя. Таких ошибок нет.

Только вот здесь ошибочка (echo "Converting $FILE...". Нужно скобку убрать.

[Удален]
#4

да, скобочку лишную уже нашел, убрал, но ошибки не пропали. А чем может быть связанно? Может версия не та? Система CentOS4.3

A5
На сайте с 06.08.2006
Offline
46
#5

www:~# bash --version

bash --version

GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)

Copyright (C) 2007 Free Software Foundation, Inc.

[Удален]
#6

А у меня

GNU bash, version 3.00.15(1)-release (x86_64-redhat-linux-gnu)

Copyright (C) 2004 Free Software Foundation, Inc.

Старая выходит?

А как ее обновить? попробывал yum install bash - в репозитории не нашлось (

A5
На сайте с 06.08.2006
Offline
46
#7

C CentOS не знаком. :(

А файл, случайно, не в DOS кодировке (CR/LF). Например, если смотреть в nano, vi, cat -e, то будут символы ^M

[Удален]
#8
Art569:
А файл, случайно, не в DOS кодировке (CR/LF). Например, если смотреть в nano, vi, cat -e, то будут символы ^M

нет, все читабельно. Может ли быть проблема из-за старой версии BASH?

A5
На сайте с 06.08.2006
Offline
46
#9
Hekcfy:
нет, все читабельно. Может ли быть проблема из-за старой версии BASH?

Я думаю, нет. Можешь посмотреть файл изменения версий.

Может, зальешь, куда-нибудь скрипт в архиве (tar.gz), тот который у тебя на сервере.

zzeus
На сайте с 04.01.2008
Offline
74
#10

На CentOS 5 вполне работает. думаю таки проблемы с кодировкой у вас. На сервере скорее всего UTF-8 а вы ему cp1251 пытаетесь впарить

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий