Как Бэш обрабатывает кавычки в секции замены строк расширения параметров?

tl; dr: Удалите конфликтующее приложение перед запуском pacman .

pacman (и другие менеджеры пакетов) хранят индекс пакетов и файлов , которыми они управляют ( pacman --query --list ). Некоторые файлы, такие как конфигурация, будут помечены как изменяемые и не будут перезаписаны во время обновления (за исключением особых случаев, когда диспетчер пакетов обычно перемещает старый файл перед созданием нового). Другие файлы будут помечены как неизменяемые. Если другое приложение изменит эти файлы каким-либо образом без соответствующего обновления индекса, менеджер пакетов не сможет узнать, что делать с этими файлами во время обновления.

Многие приложения, установленные с использованием стандартного ./configure & & make & & sudo make install pattern можно удалить с помощью sudo make uninstall . Если приложение установлено каким-либо другим способом, для его удаления может потребоваться что-то другое. Как правило, рекомендуется хранить копию установочных файлов где-либо (например, ~/install ), чтобы иметь возможность надежно удалить их в таких случаях. Просто удаление конфликтующих файлов, вероятно, оставит другие файлы, которые могут вызвать другие проблемы.

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

-121--11557-

Лучшее руководство по кластеру rgmanager, которое я видел: Учебник кластера AN! 2

Ограждение - это действие одного узла кластера, гарантирующее, что неисправный узел не может получить доступ к общим ресурсам. STONITH (Shoot The Other Node In The Head) также называется силовым ограждением, в основном перезагружает отказавший узел.

Это возможно либо с помощью удаленной консоли (например, HP iLO, Dell DRAC и т.д.), либо с помощью команды гипервизора перезапустить виртуальную машину (в случае виртуальных машин). Необходимо найти правильный агент фехтования для VirtureBox.

В случае отсутствия агента фехтования VirtureBox для их размещения необходимо использовать VMware/KVM/Xen - у них есть необходимые агенты.

-121--185272-

Больше похоже на задание для perl :

perl -0777 -pe 's{(CREATE TABLE \S+\s+)\K(\((?:(?2)|.)*?\))}
  {"(" . join(",", $2 =~ /".*?"/g) . ")"}gse'

(Это предполагает, что строки в кавычках не содержат несопоставленных скобок и достаточно свежей версии perl ).

Разбивка:

  • -0777 , установите разделитель записей на 0777 (невыполнимое значение байта), поэтому фактически включает режим slup , где perl действует на весь вход в целом.
  • -pe 'code' : sed режим. ( e оценивает код e expression по одной записи за раз и p печатает его впоследствии).
  • s {...} {...} gse : заменить g лобно, рассматривает последовательность как s одинарную строку (. также соответствует символам новой строки), и подстановка должна рассматриваться как perl e expression для e оценки.
  • \K : mar k - начало заменяемой детали.
  • (? 2) : один из способов выполнения рекурсивного regexp. Сюда входит regexp, заключенный во вторую группу (...) . Так \( (: (? 2) |.) *?\) . Представляет собой (, за которым следует последовательность из более (...) групп или других символов (как можно меньше), за которыми следует ) .
  • join («,» $2 = ~/«. *? »/g) присоединяется к списку последовательностей, соответствующих . «*?» (то есть процитированный последовательности) в $2 с запятой.

5
15.12.2017, 07:58
1 ответ

Путем экспериментов я обнаружил, что следующий синтаксис работает для преобразования одинарных -кавычек в двойные -кавычки в GNU bash, версия 5.0.11 (1 )-выпуск (x86 _64 -пк -linux -gnu )...

text="aaa'bbb'ccc"; echo "${text//$"'"/$'"'}"

Результат...

aaa"bbb"ccc

Note that the single-quote pattern must be enclosed in double-quotes and the double-quote replacement enclosed in single-quotes.

Соответствующая съемка задокументирована как...

extquote  
    If set, $'string' and $"string" quoting is performed within
    ${parameter} expansions  enclosed  in  double quotes.  This option
    is enabled by default.
0
20.07.2020, 08:58

Теги

Похожие вопросы