ksh: синтаксическая ошибка возле неожиданного токена `готово '

Я пытаюсь написать сценарий для вывода строк, которые соответствуют определенным критериям, в новый файл .txt, пытаясь объединить unix и awk

гуглил, но продолжал получать эту ошибку: синтаксическая ошибка рядом с неожиданным токеном `готово '

Filename="bishan"
file="659.A"
while IFS= read line
do
   cat $Filename.txt | awk '{ otherSubNo = substr($0,73,100);gsub(/    
   /,"",otherSubNo); if(length(otherSubNo)>8){ print "Subscriber Number is
   ",": ",substr($0,1,20)," Other Subscriber Number is ", " :    
   ",substr($0,73,100) }}'| wc -l >> $Filename.txt 
done <"$file"

Пример 659.A выглядит следующим образом: Это первая строка файла 659.a:

6581264562 201611050021000000002239442239460000000019010000010081866368

        00C0525016104677451     100C 0                                  0000

0111000 000000000000000000006598540021 01010000000000659619778001010000 000000659854000300000000000000000000 004700001

Пожалуйста, помогите, я гуглил об этом, но безрезультатно


person John Sim    schedule 08.11.2016    source источник
comment
Я не могу воспроизвести симптом. Это весь сценарий? У вас нет #! строчки вверху?   -  person Keith Thompson    schedule 08.11.2016
comment
да, у меня есть эта верхняя строка #! / bin / ksh   -  person John Sim    schedule 08.11.2016
comment
Затем вам нужно обновить свой вопрос, чтобы показать весь скопированный и вставленный скрипт, в котором обнаружена проблема. Также покажите точное сообщение об ошибке копирования и вставки. Поскольку вы не знаете, что вызывает проблему, по определению вы не знаете, какую информацию можно безопасно опустить (например, строку #!), поэтому не пропускайте ничего. Если ваш сценарий слишком велик, обрежьте его, но убедитесь, что публикуемый вами сценарий действительно демонстрирует проблему. минимальный воспроизводимый пример   -  person Keith Thompson    schedule 08.11.2016
comment
я не вижу ошибки, но ваш код настолько плохо отформатирован, что его трудно сказать   -  person glenn jackman    schedule 08.11.2016
comment
@glennjackman: Я скопировал код и запустил его в своей системе. Ошибка не возникла. Ошибка должна быть в другом месте.   -  person Keith Thompson    schedule 08.11.2016


Ответы (1)


Мне удалось воспроизвести указанную ошибку, хотя и с близким приближением, набрав сценарий в блокноте (Windows) и протестировав его в cygwin.

script.sh:

while read myline
do
echo $myline
done

В кш:

~> /usr/bin/ksh ./script.sh
: not found
./script.sh[7]: syntax error: 'done' unexpected

В bash:

~> /usr/bin/bash ./script.sh
./script.sh: line 2: $'\r': command not found
./script.sh: line 6: syntax error near unexpected token `done'
./script.sh: line 6: `done'

Указанная ошибка (по крайней мере, в моем случае) связана с символами CRLF. Когда я копирую и вставляю код в cygwin, CRLF превращается в LF (вместе со всеми невидимыми управляющими символами, которые теряются), что приводит к исчезновению ошибки.

person blackpen    schedule 08.11.2016