Как мы завершаем сеансы экрана на основе их прикрепленных или отсоединенных свойств или их идентификаторов?

Если есть известный вам символ, который не может появиться в успешном совпадении, вы можете проверить конкатенацию $Aи $Bпо соответствующему повторяющемуся регулярному выражению.

regex='([0-9]+(\.([0-9]+(\.([0-9]+))?))?)'

[[ "$A-$B" =~ ^$regex-$regex$ ]] && echo "A: $A B: $B"

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

0
28.12.2019, 10:29
1 ответ

В стандартном синтаксисе оболочки:

cd /var/run/screen/S-erpnext
for screen in *
do
  case $screen in
    (5061.erpnext) : do nothing         ;;
    (*)            kill "${screen%%.*}" ;;
  esac
done

Вышеупомянутые изменения в каталоге экрана для этого пользователя затем перебирают каждый файл сеанса в этом каталоге. Если сеанс , а не 5061.erpnext, то он уничтожает соответствующий PID (за номер до первой точки ). Расширение ${screen%%.*}удаляет как можно больше символов с конца строки, пока не найдет точку. Это приводит к удалению материала, который не является PID. : do nothingиспользует встроенный -:, который ничего не делает, включая игнорирование каких-либо параметров, поэтому я сделал строку самокомментарием -, чтобы указать, что мы не уничтожаем любые PID для этого случая.

2
28.01.2020, 02:29

Теги

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