Illegal operator sequence error как исправить
Перейти к содержимому

Illegal operator sequence error как исправить

  • автор:

unexpected operator

Гуглил не помогло,стоит Debian GNU/Linux 7 при запуске командой:

service pmta start

Такая вот ошибка,но сам сервер вроде как запускается.

Starting PowerMTA: /etc/init.d/pmta: 45: ulimit: Illegal option -u /etc/init.d/pmta: 46: [: Illegal number: done. /etc/init.d/pmta: 164: [: generic: unexpected operator

Как можно исправить такое? Помогите плиз.. .

iNdexoiD
09.12.15 11:08:43 MSK

скрипт бы приложил, ничего ж не понятно. выполни:
bash -x /etc/init.d/pmta start &> /tmp/LOG.txt
и залей вывод /tmp/LOG.txt на какойнить pastebin.ru

bl ★★★
( 09.12.15 11:13:23 MSK )
Ответ на: комментарий от bl 09.12.15 11:13:23 MSK

bash -x /etc/init.d/pmta start &> /tmp/LOG.txt
+ RETVAL=0 + VERSION=generic + '[' -f /etc/redhat-release ']' + '[' -f /etc/SuSE-release ']' + case "$1" in + '[' generic == suse ']' + echo -n 'Starting PowerMTA: ' Starting PowerMTA: + set_limits ++ ulimit -Hn + OLIMIT=4096 + '[' 4096 '!=' unlimited ']' + '[' 4096 -lt 16384 ']' + ulimit -Hn 16384 ++ ulimit -Hu + OLIMIT=31645 + '[' 31645 '!=' unlimited ']' + '[' 31645 -lt 6144 ']' + /usr/sbin/pmtawatch --start + RETVAL=0 + case "$VERSION" in + '[' 0 -eq 0 ']' + echo done. done. + '[' generic == suse ']' + exit 0 

iNdexoiD
( 09.12.15 11:24:52 MSK ) автор топика
Ответ на: комментарий от iNdexoiD 09.12.15 11:24:52 MSK

хех, не удалось воспроизвести. похоже из-под service и при выполнеии bash по-разному выдаётся вывод ulimit, и в случае с service в секции проверок:
‘[‘ 4096 -lt 16384 ‘]’
не передаётся значение нужного лимита.

хз. у меня идей нет, разве что попробовать в /etc/init.d/pmta добавить в начало скрипта
set -x
в конце скрипта
set +x
для вкл-выкл дебага, и проверить service stop/start что происходит в вызовах тех ulimit

bl ★★★
( 09.12.15 11:41:20 MSK )
Ответ на: комментарий от bl 09.12.15 11:41:20 MSK

Добавил,пробую service pmta start,service pmta stop Наружу всё вываливается вот такое. .

+ RETVAL=0 + VERSION=generic + [ -f /etc/redhat-release ] + [ -f /etc/SuSE-release ] + [ generic == suse ] /etc/init.d/pmta: 55: [: generic: unexpected operator + echo -n Starting PowerMTA: Starting PowerMTA: + set_limits + ulimit -Hn + OLIMIT=4096 + [ 4096 != unlimited ] + [ 4096 -lt 16384 ] + ulimit -Hn 16384 + ulimit -Hu /etc/init.d/pmta: 45: ulimit: Illegal option -u + OLIMIT= + [ != unlimited ] + [ -lt 6144 ] /etc/init.d/pmta: 46: [: Illegal number: + /usr/sbin/pmtawatch --start + RETVAL=0 + [ 0 -eq 0 ] + echo done. done. + [ generic == suse ] /etc/init.d/pmta: 164: [: generic: unexpected operator + exit 0 

iNdexoiD
( 09.12.15 11:52:10 MSK ) автор топика
Ответ на: комментарий от iNdexoiD 09.12.15 11:52:10 MSK

похоже на шелл, не поддерживающий ==

Elyas ★★★★★
( 09.12.15 12:18:50 MSK )
Ответ на: комментарий от iNdexoiD 09.12.15 11:52:10 MSK

возможно шелловский(небашевский) вариант ulimit не поддерживает опцию -u.
варианты: изменить шебанг на баш.
изменить проверку ulimit. возможно отказаться от неё.
опции означают:
The -H and -S options specify that the hard or soft limit is set for the given resource. A hard limit cannot be increased by a non-root user once it is set
-u The maximum number of processes available to a single user

bl ★★★
( 09.12.15 12:19:26 MSK )
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

Похожие темы

  • Форум И снова iptables и Suse 9.3 (2005)
  • Форум redirecting to systemctl (2013)
  • Форум Starting NFS daemon [FAILED] (2013)
  • Форум Apache2, ubuntu 16.04 (2018)
  • Форум VMware на Debian (2012)
  • Форум bash unexpected operator (2018)
  • Форум Проблема с сетевым интерфейсом (2015)
  • Форум Помогите с MYSQL (2013)
  • Форум не стартует iptables в Gentoo (2013)
  • Форум systemd добавить своё не инсталлированное приложение (2018)

Оператор опциональной последовательности

Оператор опциональной последовательности ?. позволяет получить значение свойства, находящегося на любом уровне вложенности в цепочке связанных между собой объектов, без необходимости проверять каждое из промежуточных свойств в ней на существование. ?. работает подобно оператору . , за исключением того, что не выбрасывает исключение, если объект, к свойству или методу которого идёт обращение, равен null или undefined . В этих случаях он возвращает undefined .

Таким образом, мы получаем более короткий и понятный код при обращении к вложенным по цепочке свойствам объекта, когда есть вероятность, что какое-то из них отсутствует.

Интерактивный пример

Синтаксис

?.prop; obj?.[expr]; arr?.[index]; func?.(args); 

Описание

Оператор опциональной последовательности предоставляет способ упростить доступ к значениям в цепочке объектов, когда возможно, что какое-то свойство (или метод) в ней равно undefined или null .

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

let nestedProp = obj.first && obj.first.second; 

Если обращаться к obj.first.second без проверки obj.first , то, если свойство obj.first равно null или undefined , выбросится исключение TypeError .

Однако, с оператором опциональной последовательности ( ?. ) не требуется явно проверять ссылку на obj.first перед обращением к obj.first.second :

let nestedProp = obj.first?.second; 

Если используется оператор ?. вместо . , JavaScript знает о необходимости проверки obj.first перед обращением к obj.first.second . Если значение obj.first равно null или undefined , выполнение выражения автоматически прекращается и возвращается undefined .

Это эквивалентно следующему (кроме создания временной переменной):

let temp = obj.first; let nestedProp = temp === null || temp === undefined ? undefined : temp.second; 

Опциональная последовательность с вызовом функции

Вы можете использовать ?. , когда необходимо вызвать метод, которого может не существовать. Это может быть полезно, например, при использовании API, в котором метод может быть недоступен из-за устаревания или не поддерживаемости устройством пользователя.

Использование ?. с вызовом функции значит, что выполнение автоматически вернёт undefined , а не выбросит исключение, если метод не найден:

let result = someInterface.customMethod?.(); 

Примечание: Для существующего свойства, не являющегося функцией, использование конструкции x.y?.() всё равно выбросит TypeError исключение ( x.y не является функцией ).

Работа с колбэк-функциями и обработчиками событий

Если вы используете колбэк-функции или извлекаете методы объекта деструктурирующим присваиванием, Вы можете получить несуществующие значения, которые нельзя вызывать как функции до проверки на их существование. Используя оператор ?. , вы можете избежать лишних проверок:

// С использованием ES2019 function doSomething(onContent, onError)  try  // . делаем что-то с данными > catch (err)  if (onError)  // проверяем, существует ли onError onError(err.message); > > > 
// С использованием оператора опциональной последовательности function doSomething(onContent, onError)  try  // . делаем что-то с данными > catch (err)  onError?.(err.message); // не выбросит исключение, если onError равен undefined > > 

Опциональные последовательности в выражениях

Вы также можете использовать оператор опциональной последовательности, когда обращаетесь к свойству с помощью скобочной нотации:

let nestedProp = obj?.["prop" + "Name"]; 

Примеры

Базовый пример

В этом примере производится обращение к свойству name элемента с ключом bar объекта Map . Элемент с таким ключом отсутствует, но исключение выброшено не будет; nameBar равен undefined .

let myMap = new Map(); myMap.set("foo",  name: "baz", desc: "inga" >); let nameBar = myMap.get("bar")?.name; 

Сокращённое выполнение

При использовании оператора опциональной последовательности в выражениях, где левая часть операнда равна null или undefined , выражение не будет выполнено. Например:

let potentiallyNullObj = null; let x = 0; let prop = potentiallyNullObj?.[x++]; console.log(x); // 0, т.к. x не был инкрементирован 

Совместное использование операторов опциональной последовательности

Во вложенных объектах возможно использование оператора опциональной последовательности неограниченное количество раз:

let customer =  name: "Carl", details:  age: 82, location: "Paradise Falls", // точный адрес неизвестен >, >; let customerCity = customer.details?.address?.city; // … это также работает с вызовами функций let duration = vacations.trip?.getTime?.(); 

Использование с оператором ??

Оператор ?? может использоваться после опциональной последовательности для установления значения по умолчанию:

let customer =  name: "Carl", details:  age: 82 >, >; const customerCity = customer?.city ?? "Unknown city"; console.log(customerCity); // Unknown city 

Спецификации

Specification
ECMAScript Language Specification
# prod-OptionalExpression

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • Github — Proposal-pipeline-operator
  • TC39 proposals
  • Nullish Coalescing Operator

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 7 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2024 by individual mozilla.org contributors. Content available under a Creative Commons license.

Konica Minolta Support System

При печати документа печатается страница с ошибкой PCL XL Error. Error illegalOperatorSequence или syntaxerror

  • FAQ
  • Оборудование
  • Серия BizHub
  • При печати документа печатается страница с ошибкой PCL XL Error. Error illegalOperatorSequence или syntaxerror

Для открытия ссылки в следующем сообщении/заметке необходимо нажать и удерживать клавишу Ctrl или Cmd или Shift и кликнуть по ссылке (зависит от вашего браузера и ОС).

Симптомы:

Проблема:

Решение:

Информация FAQ

OTRS detected possible network issues. You could either try reloading this page manually or wait until your browser has re-established the connection on its own.

Соединение было восстановлено после потери связи. По этой причине ряд элементов на странице может работать неверно. Чтобы исключить это, настоятельно рекомендуем обновить страницу.

Ошибка при попытке вывести endl: no match for ‘operator’)

Хочу написать класс обертку, который в зависимости от переменных будет или не будет выводить лог в stdout и/или файл log.txt .

#include #include using namespace std; struct A < bool use_log = 1, use_filelog = 0; ofstream log_file; void open() < use_filelog = 1; log_file.open("log.txt"); >>; template A &operator <<(A &a, T x) < if (a.use_log) < std::cout if (a.use_filelog) < a.log_file return a; > int main() < A a; a 

Получаю ошибку при попытке вывести endl . В чём проблема не пойму. Может данный класс можно реализовать как-нибудь по другому? Вот начало полотна вывода от gcc :

4.cpp: In function ‘int main()’: 4.cpp:26:24: error: no match for ‘operator’) a A& operator <<(A&, T) template A &operator <<(A &a, T x) < ^ 4.cpp:14:23: note: template argument deduction/substitution failed: 4.cpp:26:27: note: couldn't deduce template parameter ‘T’ a << "Hello, World!" << endl; ^ In file included from /usr/include/c++/5/iostream:39:0, from 4.cpp:1: /usr/include/c++/5/ostream:628:5: note: candidate: templatestd::basic_ostream& std::operator<<(std::basic_ostream&&, const _Tp&) operator<<(basic_ostream&& __os, const _Tp& __x) 

А вот от clang :

prog.cpp:26:27: error: reference to overloaded function could not be resolved; did you mean to call it? a & __os) ^ prog.cpp:14:23: note: candidate template ignored: couldn't infer template argument 'T' template A &operator<<(A &a, T x) < 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *