Самый быстрый способ удалить строку в переменной

Возможно, вам понадобится перезапустить некоторые услуги.

Из Статья Redhat :

Мне нужно перезагрузить или перезапустить услуги после установки обновления для CVE-2014-6271 и CVE-2014-7169?

Если ваша система использует экспортируемый Bash Функции, рекомендуется перезапустить пострадавшие услуги. Пораженные интерактивные пользователи могут быть восстановлены вход в систему, а заседания экрана или TMUX могут быть воспользованы.

Обновление Bash предоставлено для исправления этих проблем, изменяет имена экспортированных функций в среде. Если функция экспортируется старой версией Bash, она не распознана вновь запущенным процессам Bash после обновления, и по существу становится неопределенным. Перезапуск служб гарантирует, что новая версия экспорта Bash функционирует под ожидаемое имя, что делает его снова видимым.

Чтобы узнать, какие услуги необходимо перезапустить (или какие пользователи должны повторно войти), выполните следующую команду после обновления:

$ Greep -l -z '[^)] = () {' / proc / [1-9] * / Environment | Cut -D / -F3

Возвращенные PID относятся к процессам, которые используют старые определения экспортированных функций в их среде. Эти процессы должны быть перезапущены. Чтобы обнаружить, какое обслуживание начало определенную PID и потребности в перезапуске, на Red Hat Enterprise Linux 7, используйте следующую команду:

$ Systemctl Status

на Red Hat Enterprise Linux 6 и ранее используйте PSTREE -P или PS -axuf команду и ищите конкретный PID.

0
20.10.2015, 04:38
3 ответа

Предположим, что ваша переменная содержит хотя бы одно вхождение ef, POSIXly:

$ printf '%s\n' "${foo%ef*}${foo##*ef}" 
ab cd  gh

В вариантах bash, ksh (исключая posh), zsh и yash, вы можете использовать:

$ printf '%s\n' "${foo/ef}"

для удаления первого вхождения ef, или "${foo//ef}" для удаления всех вхождений.

5
28.01.2020, 02:13

Вот два способа сделать ...

uc@SVE1411EGXB:~/shop_app/depot2$ foo=`echo ab cd ef gh`
uc@SVE1411EGXB:~/shop_app/depot2$ echo ${foo/ef} 
ab cd gh

Или с помощью потокового редактора AKA sed .. Найдите "ef" и ничего не замените.

uc@SVE1411EGXB:~/shop_app/depot2$ echo $foo | sed 's/ef//g'
    ab cd  gh
0
28.01.2020, 02:13

Вы можете использовать замену шаблонов оболочки для удаления шаблонов:

$ foo="ab cd ef gh"
$ echo "${foo//ef}"
ab cd  gh

Примечания

  1. Многие считают использование обратных кавычек архаичным. Обычная современная форма подстановки команд - $ (...) .

  2. Использование обратных кавычек и эха для создания foo излишне. Вы можете просто присвоить строку переменной, как показано выше.

  3. Чтобы вы знали, что происходит, когда вы используете echo, не помещая его аргумент в кавычки, оболочка выполняет разделение слов , разбивая строку на три части, которые были переданы в echo как три отдельных аргумента. echo объединяют свой аргумент пробелом.

5
28.01.2020, 02:13

Теги

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