все. Как я могу записать все сессии в массив? (screen -ls) т.е.

23257.name_session1 (25.06.2017 22:41:18 PM) (Отдельно)

22011.name_session2 (25.06.2017, 19:50:33)(Отдельно)

arr [0] = 23257.name_session1;

arr [1] = 22011.name_session2;

примеры команд: screen -ls | grep -oP '\d+.\S+'| grep -oP '(?<=\ Д.)\S+»

1 ответ1

0
arr=($(screen -ls | egrep -o '\t.+\t' | sort -n))

Сломать:

arr=($(...)): присваивает серии разделенных пробелами значений индексированный массив, например, arr=($(1 2 three 4)) определяет $arr[0]=1 , $arr[1]=2 , $arr[2]=three и $arr[3]=4 .

screen -ls: базовая функция, выход которой должен быть отфильтрован. Это выводит следующие (примерные) строки:

There are screens on:
    79481.ttys000.macbook   (Detached)
    80513.ttys004.macbook   (Attached)
    79513.ttys002.macbook   (Detached)
3 Sockets in /var/folders/ht/0ty_c8mx16v69csh949g3rvr0000gn/T/.screen.

Обратите внимание, что пробелы в строках, содержащих подробности сеанса, представляют собой столбцы с разделителями табуляции.

egrep -o '\t.+\t': выбирает только выходные данные в каждой строке, которые находятся между двумя символами табуляции (включая вкладки). Это изолирует строки pid.tty.host .

sort -n: сортировка каждой строки по числовому порядку, от наименьшего pid к наибольшему pid.

Полученный массив содержит идентификаторы pid.tty.host для каждого сеанса экрана (как присоединенного, так и отсоединенного), с $arr[0] содержащим сеанс, который начался первым, до $arr[n-1] содержащим n- й сеанс, началось совсем недавно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .