Это потому, что *
имел другое значение в ваших тестах.
В случае 1 , случае 3 и случае 4 он используется как сопоставление с образцом . В случае 2 это метасимвол регулярного выражения (или квантор, или звезда Клини ).
При сопоставлении с образцом символ *
будет соответствовать любой строке, включая пустую строку, a *
будет соответствовать любой строке, начинающейся с a
, пример a
, aa
, ab
, но не b
В регулярном выражении квантификатор *
соответствует нулю или более вхождений предыдущего токена , a *
будет соответствовать нулю или более последовательностей a
, например ''
, a
, aa
, aaa
, ab
, b
.
Имея это в виду, ваш case 4 будет интерпретироваться как соответствует любой строке, содержащей -
, поскольку он использовался как сопоставление с образцом, ваше объяснение является используется как регулярное выражение.
Итак, abcd - 1234-defg
, самое короткое совпадение подстроки * - *
- abcd-
, а самое длинное совпадение - это вся строка. Поскольку, когда вы используете форму $ {var1 # * - *}
, которая представляет собой расширение параметра , чтобы удалить самый короткий префикс в , $ var1
соответствует * - *
, вы получили -1234-defg
, потому что самый короткий совпавший префикс - abcd-
.
Самый очевидный ответ, конечно же, что кто-то нажал кнопку питания. Возможно, случайно — например, если кнопка питания, к сожалению, чувствительна, и кто-то слегка задел ее, проходя мимо. Это также может произойти с неисправной кнопкой питания (, например, изношены пружины ). Случайные нажатия кнопки питания можно предотвратить, установив на кнопку питания своего рода защитный кожух Молли .
Запрос корректного завершения работы, например, от IPMI, часто также регистрируется как нажатие кнопки питания.
Другой причиной может быть (электрический )шум, заставляющий систему думать, что кнопка питания нажата. Убедитесь, что провода к кнопке питания надежно закреплены на плате (и переключателе, если они не припаяны ), и проверьте прокладку кабелей, чтобы убедиться, что провода находятся вдали от предметов с большим/переменным энергопотреблением.
Если больше ничего не работает, вы можете отредактировать /etc/systemd/logind.conf
и изменить HandlePowerKey
на ignore
(, а затем перезапустить systemd -logind ). Это должно предотвратить выключение системы, но это означает, что вы не сможете использовать кнопку питания, чтобы инициировать чистое завершение работы (удержание -в течение -4 -секунд нечистое завершение работы, если таковые имеются, их нельзя отключить через systemd, поскольку это делается системной прошивкой ).