Все, что Вы заявляете, корректно, ps
только перечислит процессы, принадлежавшие Вам, если Вы не говорите это иначе с x
или a
или подобные опции. -o
устанавливает формат, это не кумулятивно. Так, для получения вывода ps -f
с SID
добавленный, необходимо будет указать все это использование -o
:
$ ps -f
UID PID PPID C STIME TTY TIME CMD
terdon 27452 27436 0 02:48 pts/3 00:00:00 /bin/bash
terdon 30622 27452 0 02:51 pts/3 00:00:00 ps -f
$ ps -o user,pid,sid,ppid,c,stime,tty,time,cmd
USER PID SID PPID C STIME TT TIME CMD
terdon 27452 27452 27436 0 02:48 pts/3 00:00:00 /bin/bash
terdon 30905 27452 27452 0 02:51 pts/3 00:00:00 ps -o user,pid,sid,ppid,c,stime,tty,time,cmd
Для получения того же вывода для всех пользователей используйте это:
ps -axo user,pid,sid,ppid,c,stime,tty,time,cmd
Самое близкое, к которому можно добраться до добавления в противоположность перезаписи выходного формата, использует -O
(это - O как в Oliver, нет 0
):
-O format
Like -o, but preloaded with some default columns.
Identical to -o pid,format,state,tname,time,command or
-o pid,format,tname,time,cmd
Так, например:
$ ps -O sid
PID SID S TTY TIME COMMAND
4879 27452 R pts/3 00:00:00 ps -O sid
27452 27452 S pts/3 00:00:00 /bin/bash
Используйте функции управления последовательностями оболочки, поставляемые с расширением параметров . Эти особенности присутствуют во всех неантичных оболочках в стиле Борна, включая тире, баш и кш.
suffix=${OUTPUT#*SauceOnDemandSessionID=}
SAUCE_ID=${suffix%%[!0-9A-Fa-f]*}
Если идентификатор всегда одинаковая длина, и состоит из только букв A через F и номера, и в выходе нет подобных строк, вы можете сделать это:
SAUCE_ID="$(echo $OUTPUT | egrep -o '[0-9a-f]{32}')"
ищет строку 32 символов Это либо число в 0-9, либо букве в AF.
Чтобы разрешить изменение длины строки, используйте что-то подобное:
SAUCE_ID="$(echo $OUTPUT | egrep -o '[0-9a-f]{26,38}')"
Этот пример совпадает с любыми из этих строк с 26 и 38 символами. Вы также могли бы использовать это, чтобы сопоставить строки с не менее 26 символов:
SAUCE_ID="$(echo $OUTPUT | egrep -o '[0-9a-f]{26,}')"
Использование GREP
с PCRE, вы можете использовать тест Regex:
SauceOnDemandSessionID=\K[^ ]*(?= job-name)
:
$ SAUCE_ID=$(grep -Po "SauceOnDemandSessionID=\K[^ ]*(?= job-name)" <<< "$OUTPUT")
$ echo "$SAUCE_ID"
5c72e54365e9bb559ea389dc164ba754
Это будет работать во всех случаях, когда у вас есть SauCeondemandsessionId =
до Название работы
после шаблона.