Ваш вопрос не очень понятен... предположим, вы хотите составить список всех процессов пользователя root, используя команду awk
мы выведем только колонку PID и произвольный текст:
export USR="root" ;ps -ef|grep $USR|awk '{ print $1" Some word "$2 }'
вы можете заменить значение USR другим пользователем.
Bash — единственная оболочка, которая позволяет пользователю открывать fd выше 9 напрямую, используя обычный синтаксис перенаправления. поэтому в других оболочках команда эквивалентна (...) 200 1>mylockfile2
, что является синтаксической ошибкой. posix требует поддержки только 0 -9. Если вы действительно хотите убедиться, что fd, используемый с блокировкой, еще не используется, вы можете использовать синтаксис, специально разработанный для открытия следующего доступного fd.(foo "$lockfd";...) {lockfd}>file
zsh
не является bash
, несмотря на некоторые усилия между двумя лагерями заглядывать через забор и воровать идеи друг у друга. Кроме того, flock
происходит от util-linux
, поэтому переносимость может быть ограничена. Вместо этого решение ZSH может использовать модуль zsystem
; этот модуль предоставляет команду flock
:
#!/usr/bin/env zsh
zmodload zsh/system
(
local lockvar
touch lockfile
zsystem flock -f lockvar lockfile
print >&2 got lock
sleep 10
zsystem flock -u $lockvar
print >&2 end lock
)