2016-09-07 10 views
0

Я получаю ниже ошибки0403-057 Синтаксическая ошибка в строке 43: '< 'не соответствует

0403-057 Синтаксис ошибки в строке 43: `<' не соответствует.

для ниже объекта соединения isql на сервере AIX.

isql -Uusername -Sserver -Ppassword -w 5000 -s"|" <<EOF>>$LOG 

Я искал различные варианты выбора, но все равно.

Ниже приведено значение $ LOG.

LOG="./log.txt" 

который, конечно же, объявлен перед заявлением о соединении isql.

Пожалуйста, помогите. Заранее спасибо.

+0

Вы пытались удалить пространство между '<<' и 'EOF'? Какая у вас оболочка ('echo $ 0' скажет вам)? – mwp

+0

да, я сделал. все так же. моя оболочка bash –

+0

Вы помещаете 'EOF' на свою собственную линию, незакрепленную, в конце вашего ввода? – mwp

ответ

0

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

while read line 
do 

echo "$line" | while IFS=\| read row_id col_name col_value 
do 

isql -Uusername -Sserver -Ppassword -w 5000 -s"|" <<EOF>> $LOG 

EOF 

done < $FILE 

Я удалил все SQL заявления выше в то время как цикл, чтобы сделать его немного менее грязный и легче найти виновника. Выяснилось, что я пропустил закрытие одной из петель.

Ниже приведена правильная петля.

while read line 
do 
echo "$line" | while IFS=\| read tranche_id col_name col_value 
do 

isql -Uusername -Sserver -Ppassword -w 5000 -s"|" <<EOF>> $LOG 

EOF 

done 

done < $FILE 

Грустно, как «сделано» пропустило мой разум.

+0

Вместо пробелов используйте цитаты: 'cmd ... <<"EOF" >>" $ LOG "' –