Word unexpected expecting ошибка

Обновлено: 16.05.2024

Проблема вкратце - в linux всякий раз, когда мы получаем следующую ошибку "Синтаксическая ошибка: слово неожиданное (ожидающее" ) ")" , что он обычно означает?

Проблема в деталях. Я пытаюсь перекрестно скомпилировать Qt-4.6 в соответствии с цепочкой инструментов Sourcery на Ubuntu 10.04. Я выполнил точные шаги, упомянутые в ссылке компиляция Qt-4.6. Но на этапе. /configure я получаю следующую ошибку:

P.S 1 Инструментарий Sourcery присутствует внутри /opt/folder, и моя переменная PATH правильно указывает на нее. P.S 2- Эта инструментальная цепочка не была установлена ​​вручную мной. Скорее, он был предоставлен поставщиком в виде файла .tgz, который я извлек внутри/opt/folder.

Ответ на это, похоже, размещен в инструкциях, к которым вы привязались.

По общему признанию, это длинный путь вниз в комментариях, но поиску qmake: Syntax error: word unexpected не потребовалось много времени.

Tej говорит: 4 января 2013 года в 12:20 вечера

Хорошо, я решил проблему. Очень жаль, что ppl не скажите, что на самом деле является проблемой. Проблема в том, что мы должны использовать Host QMAKE. Для этого независимо Экспорт (экспорт PATH =/usr/local/arm/4.3.2/bin: $PATH и т.д.), Мы сделали это во время tslib установки, мы должны отменить все это. Вот оно.

Надеюсь, что кто-то поможет

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

То, что ошибка, сообщаемая оболочкой Almquist или любой ее производной, такой как dash (и dash , была стандартной реализацией /bin/sh по умолчанию в Ubuntu 10.04), когда слово найдено при разборе синтаксиса script где вместо ) ожидается, например, как в этом случае утверждение:

Это потому, что после b единственное, что ожидается после, - это ) (хотя на самом деле | также разрешено), так что слово c является неожиданным.

Один случай, когда это может произойти, - это если script был записан или перенесен через Microsoft OS, где окончанием строки текста является CRLF вместо LF.

script, написанный на MS-DOS, будет выглядеть как:

в Unix и что c будет дополнительным словом после слова <CR> .

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

Поскольку вы используете устаревшую и более не поддерживаемую ОС, также возможно, что вы используете ошибку в этой версии dash . Вы можете запустить dpkg-reconfigure dash и сообщить системе не использовать dash для sh (но bash вместо этого), чтобы узнать, помогает ли это.

Снова вряд ли будет в первой строке.

Что более вероятно, так это то, что qmake файл не является script, а двоичным исполняемым файлом, который не распознается системой как таковой, например, поскольку он имеет двоичный формат для неправильной архитектуры или был поврежден при передаче.

В этом случае, когда система не сможет распознать его как собственный исполняемый файл, вызывающее приложение попытается запустить sh на нем, как если бы это была оболочка script, и наличие символа ( в файле может произойти сбой dash с такой ошибкой.

И если вы посмотрите на содержимое /bin/touch , как если бы это был script, вы увидите:

Problem in short- In linux whenever we get the following error "Syntax error: word unexpected (expecting ")")", what does it generally mean?

Problem in details- I have been trying to cross-compile Qt-4.6 as per Sourcery tool chain on Ubuntu 10.04. I followed the exact steps mentioned at the link compiling Qt-4.6. But I get the following error right in the ./configure step -

Searching in internet I found lots of posts regarding this error. Read all of them. But still clueless as to What this error is and How to solve it. I would be glad if someone would help me in understanding this error.

P.S 1- Sourcery toolchain is present inside /opt/ folder and my PATH variable is correctly pointing to it. P.S 2- This toolchain was not installed manually by me. Rather it was provided by a vendor as a .tgz file which I extracted inside /opt/ folder.


133 1 1 gold badge 1 1 silver badge 5 5 bronze badges

5 Answers 5

That's an error reported by the Almquist shell or any of its derivatives like dash (and dash happened to be the default implementation of /bin/sh on Ubuntu 10.04) when a word is found while parsing the syntax of a script where a ) is expected instead, for instance like in this case statement:

That's because after b , the only thing that is expected after is ) , (though actually | would also be allowed) so that c word is unexpected.

One case where that can happen is if the script has been written on or transferred through a Microsoft OS where text line endings are CRLF instead of just LF.

script written on MS-DOS would appear as:

on Unix and that c would be an extra word after the <CR> word.

Another possibility is that that script you're trying to run has been written on the assumption that sh was bash and uses constructs that are not portable to other sh implementations.

Since you're using an outdated and no longer maintained OS, it's also possible that you're running into a bug in that version of dash . You could run dpkg-reconfigure dash and tell the system not to use dash for sh (but bash instead) to see if that helps.

Again unlikely to be on the first line.

What sounds more likely is that that qmake file is not a script, but a binary executable that is not recognised as such by the system, for instance because it is of a binary format for the wrong architecture or it has been corrupted in transfer.

In that case, when the system fails to recognise it as a native executable, the invoking application would try to run sh on it as if it was a shell script, and the presence of a ( character in the file could cause dash to fail with such an error.

And if you look at the content of /bin/touch as if it were a script, you see:

hs
----squeeze.h
Makefile
obj
src
----main.c
----squeeze.c

При выполнении команды make printvars ожидается такой вывод:

src/
hs/
obj/
src/main.c src/squeeze.c
main.c squeeze.c
main.o squeeze.o
obj/main.o obj/squeeze.o
io.o str.o

/C/mylibs/obj/str.o
-Wall -g -ansi -pedantic -isystem

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь


Ошибка при выполнении makefile на windows7 x64
Здравствуйте! Читаю вот эту серию статей. Стянул с github исходникик, думал запущу - посмотрю.

При запуске Makefile выдается ошибка "Makefile:2: recipe for target 'all' failed"
решила поучиться собирать проекты через мэйкфайлы. Пожалуйста, помогите разобраться all.

Ошибка при компиляции из makefile-а
Доброго дня. Проблема в следующем. Есть исходники готового проекта, написанного на C. Такой.

Решение

OBJS := (addsuffix .o (basename $(SRCS)))
PRE-OBJS := (addprefix $(OBJDIR) $(OBJS))

Увы, ошибка та же.

Добавлено через 15 минут
А нет, всё хорошо получилось, спасибо! ^_^

А что у вас это за команда notdir в скобочках? Знак доллакра в переди не нужен? Эта make-функция преобразует, например, слова foo/bar/baz.c baz/foo/bar.c в слова baz.c bar.c Grzyb, Дело в том что без знака доллара впереди эта функция в виме даже не подсвечивается Верно. Но я думал, что так и надо. Вим же не подсвечивает символические константы в коде на Си. Благодаря вашему топику обнаружила ошибку в своем make файле придется еще разобраться как все это
у меня собиралось и работало В кратце (заменила для наглядности на ваши переменные)
Это позволяет получать объектные файлы без необходимости явно указывать строчку компиляции в make файле,
будут скомпилированы объектные файлы со строкой по умолчанию, без параметров,
ну или если нужны дополнительные опции как у меня то так:

Разобралась
Строка компиляции не работала, а загаловочные файлы подключались даже в строку компиляции по умолчанию
благодаря подключению для поиска местной директории include таким образом

Невосстановимая ошибка Ошибка при выполнении запроса POST
Невосстановимая ошибка Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: по причине.


Ошибка при выполнении кода VBA при авторизации пользователя
Добрый день! Для создания авторизации пользователей в базе взяла готовый код VBA и попробовала.

Ошибка памяти при выполнении, при компиляции не выводит ошибки
ПОмогите плс программа вводит строку символов до точки, а после вычисляет процент согласных в этой.


При выполнении разных операций с MS VS2013, например, при закрытии, иногда появляется ошибка
В кодерстве совсем-совсем новичёк, поэтому извиняйте за нубость вопроса. Пытаюсь разобраться в.

Qt ошибка при выполнении
Всем привет! Помогите пожалуйста. Уже голову сломала, не могу найти ошибку. Идея в том, что.


First Cup of Ubuntu

Syntax error: word unexpected (expecting "do")

Hi! i am writting a code to delete excel reports older than one day.
The code is as follows:

path="/home/directory/Reports"
echo "The reports older than one day are getting deleted. "
for i in `find $path/*.xls -mtime +1 -print`
do
echo "File $i is deleted"
sudo rm $i
done
echo "Deletion is completed"

When i am executing this script, it is giving me the error that
Syntax error: word unexpected (expecting "do")

but if i write the same code on command prompt instead of in shell script, it is getting executed properly. Please let me know where i am getting wrong.


Tea Glorious Tea! Join Date Apr 2008 Location Campinas, SP - Brasil Beans 355 --> Beans 355

Put this in the first line of your script file:

This sets which interpreter you are using (in this case, sh, or bash). This
may solve the problem. I cannot see anything else now.

Just for curiosity: Do you really need root privileges to delete the files? (Is the use of "sudo" necessary, it seems strange, and dangerous).


Quad Shot of Ubuntu

The other thing, if that doesn't solve it, is that you might need a semicolon at the end of the for line.


First Cup of Ubuntu

The code snippet is as follows:

The output is as follows:
$sh Reportremoval.sh
The reports older than one day are getting deleted.
Reportremoval.sh: 5: Syntax error: word unexpected (expecting "do")


Please give me some suggestion.

Last edited by rohandeshmukh; April 21st, 2009 at 06:28 AM .


Quad Shot of Ubuntu

I think it needs more semicolons You can never have too many. When you type it in the shell it adds them automatically, so put them after the "echo" and "rm" lines.

Edit: It also occurred to me that this could be made much easier - find has a delete option:

Читайте также: