2009-03-10 3 views
0

может у меня помочь? Я запускаю это на cygwin как ./test.sh, и я получаю неожиданный конец файла в строке 51. Любые мысли?Ошибки на скрипте начинающего bash

Thx заранее

Последнее редактирование: окончательная версия «убегающий на CygWin, проблема была с разрывом строки, CrLf вместо Lf.

#!/bin/sh 
################################################## 
## USAGE 
################################################## 
if [ $# -ne 1 ]; then 
    echo "1>Use Extractor: $0 <MODO DE OPERACAO>" 
    echo "2>Use Extractor: $0 <MODO DE OPERACAO> <DATA INICIAL> <DATA FINAL>" 
    exit 127 
else 
    if [ $1 -lt 0 ]; then 
     if [ $1 -gt 1 ]; then 
      echo "2>Use Extractor: $0 <MODO DE OPERACAO> <DATA INICIAL> <DATA FINAL>" 
      exit 127 
     fi 
    fi 
fi 
################################################## 
## VARS 
################################################## 

    ########################################## 
    ## AUX 
    ########################################## 
    set java_cmd="" 
    set java_cmd_emergencial="" 
    set java_cp="" 

    ########################################## 
    ## JAR 
    ########################################## 
    set db_user="" 
    set db_pwd="" 
    set conn_string="" 
    set work_dir="" 
    set output_dir="" 


################################################## 
## PARAMETROS 
################################################## 
set mode=$1 
set data_ini="" 
set data_fim="" 
if [ $# -eq 3 ]; then 
    set data_ini = $2 
    set data_fim = $3 
fi 

################################################## 
## CHAMADA DO JAR 
################################################## 
java "$java_cp" "$java_cmd" "$mode" "$db_user" "$db_pwd" "$conn_string" "$work_dir" "$output_dir" 
+0

Код не очень с отступом .. отступ и точка строки 51 – Emilio

+0

Итак, вопрос заключается в том, чтобы найти номер строки, а затем найти ошибку? – Learning

+0

Emilio: его довольно отступы, строка 51 - последняя строка в файле tho:/ Learnin: Вопрос в том, имеет ли ошибка или нет, так как у меня нет полного доступа к серверу linux для его проверки, i 'm тестирование на cygwin, возможно, это ошибка в конце концов. –

ответ

2

Если ничего дважды проверьте, что у вас есть символ новой строки в конце последней строки сценария.

+0

1-я вещь, которую я сделал, до этого ive применил тестовый скрипт только с a if-else-fi, дал мне ту же ошибку, я начинаю думать, что ошибка на cygwin –

+0

Хотя ваш ответ не о самом коде, помог мне найти ошибку, проблема была в редакторе не сохраняя в формате unix (lf вместо crlf), теперь его все решено. –

+0

Интересно; для ошибок CR/LF, он должен сообщить, что в строке 1 ... –

3

"set" не является синтаксисом bash. Вместо «set foo = bar» вы хотите «foo = bar».

Примечание: Я написал исправленную форму без пробелов по какой-либо причине. Это имеет, чтобы быть написаны именно так. Ваш обновленный вопрос по-прежнему не так.

+0

с или без набора. Я все равно получаю ту же ошибку, thx tho. –

+0

И обратите внимание, что не должно быть пробелов вокруг '=', поэтому 'foo = bar' будет неправильным. – 2009-03-10 15:12:12

+0

ahhhh thx для подсказки –

2

Запускается для меня без ошибок на MacOS X 10.5.6, за исключением этой линии:

if [ $1 -lt 0 -o gt 1 ]; 

должен быть

if [ $1 -lt 0 -o $1 -gt 1 ]; 

Я не делаю никаких комментариев о том, действительно ли делает остальная часть сценария что это должно ...

+0

спасибо, забыли про второе сопоставление параметров, все та же ошибка:/ –

+0

какая версия bash? с приведенным выше исправлением, я не получаю ошибки при вызове одиночного параметра, используя Bash версии 3.2.39 (1) -release по Fedora Code 10. – Alnitak

+0

GNU Bash, версия 3.2.48 (21) -release (i686-pc-cygwin) –

2

Возможно, вы захотите указать необходимые поля на последней строке. Как сейчас, это будет пустой, а не «».

например

java "$java_cp" "$java_cmd" "$mode" "$db_user" "$db_pwd" "$conn_string" "$work_dir" "$output_dir" 

отредактированы по крайней мере выполнения Java на mysystem:

################################################# 
#!/bin/sh 
################################################## 
## USAGE 
################################################## 
if [ $# -ne 1 ]; then 
    echo "1>Use Extractor: $0 <MODO DE OPERACAO>;" 
    echo "2>Use Extractor: $0 <MODO DE OPERACAO> <DATA INICIAL> <DATA FINAL>" 
    exit 127 
else 
    if [ $1 -lt 0 -o $1 -gt 1 ]; then 
     echo "1>O Parametro <MODO DE OPERACAO> deve ser 0 (Cartorios) ou 1 (Transacoes);" 
     exit 127 
    fi 
fi 
################################################## 
## VARS 
################################################## 

    ########################################## 
    ## AUX 
    ########################################## 
    java_cmd="" 
    java_cmd_emergencial="" 
    java_cp="" 

    ########################################## 
    ## JAR 
    ########################################## 
    db_user="" 
    db_pwd="" 
    conn_string="" 
    work_dir="" 
    output_dir="" 


################################################## 
## PARAMETROS 
################################################## 
mode=$1 
data_ini="" 
data_fim="" 
if [ $# -eq 3 ]; then 
    data_ini=$2 
    data_fim=$3 
fi 

################################################## 
## CHAMADA DO JAR 
################################################## 
java $java_cp $java_cmd $mode $db_user $db_pwd $conn_string $work_dir $output_dir 
+0

не нужно, как только скрипт в порядке, всегда будут заполнены вары, спасибо за подсказку –

Смежные вопросы