удар: регулярные выражения, в если выражение

Просто уничтожьте его. От man pulseaudio:

   -k | --kill
          Kill  an  already  running PulseAudio daemon of the calling user
          (Equivalent to sending a SIGTERM).

Так, просто откройте терминал и работайте pulseaudio -k.

2
02.08.2014, 00:26
3 ответа

В bash 3.2 или выше:

shopt -u compat31
[[ ! $DEBUG_PACKAGE_LIST =~ [^-[:alnum:]]'libmagick++5-dbg' ]];

В bash 3.1:

[[ ! $DEBUG_PACKAGE_LIST =~ '[^-[:alnum:]]libmagick\+\+5-dbg' ]];

(обратите внимание, что [a-z]* является избыточным, так как он также совпадает с пустой строкой, поэтому всегда будет совпадать).

Работает в обоих случаях:

re='[^-[:alnum:]]libmagick\+\+5-dbg'
[[ ! $DEBUG_PACKAGE_LIST =~ $re ]]
2
27.01.2020, 22:13

Можно сделать это с помощью шаблона оболочки, а не с помощью регулярного выражения. Подготовьте пробел к строке, чтобы не нужно было относиться к первому элементу иначе, чем к остальным.

if [[ " $DEBUG_PACKAGE_LIST" = *\ libmagick++5-dbg[a-z]* ]]; then 

(Вы уверены, что обязательная буква после -dbg? Имя пакета заканчивается на -dbg.)

.
0
27.01.2020, 22:13

Вы не можете цитировать регулярное выражение справа от такого выражения (если только вы не используете версию Bash > = 3.0- альфа и <3,2-альфа). Если вы это сделаете, это будет рассматриваться как сравнение буквальных строк.

Кроме того, Bash использует расширенные регулярные выражения для = ~ , где + - специальный символ.

0
27.01.2020, 22:13

Теги

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