Ошибки начинающего скрипта bash - PullRequest
0 голосов
/ 10 марта 2009

ты можешь мне помочь? Я запускаю это на cygwin как ./test.sh и получаю неожиданный конец файла в строке 51. Есть мысли?

Спасибо заранее

LAST EDIT: финальная версия 'запущена на 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"

Ответы [ 4 ]

3 голосов
/ 10 марта 2009

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

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

2 голосов
/ 10 марта 2009

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

2 голосов
/ 10 марта 2009

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

например

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
2 голосов
/ 10 марта 2009

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

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

должно быть

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...