Использование стада не удается с ZSH, но работает в Bash?

Ваш вопрос не очень понятен... предположим, вы хотите составить список всех процессов пользователя root, используя команду awk мы выведем только колонку PID и произвольный текст:

export USR="root" ;ps  -ef|grep $USR|awk '{ print $1" Some word "$2 }'

вы можете заменить значение USR другим пользователем.

0
14.10.2018, 20:35
2 ответа

Bash — единственная оболочка, которая позволяет пользователю открывать fd выше 9 напрямую, используя обычный синтаксис перенаправления. поэтому в других оболочках команда эквивалентна (...) 200 1>mylockfile2, что является синтаксической ошибкой. posix требует поддержки только 0 -9. Если вы действительно хотите убедиться, что fd, используемый с блокировкой, еще не используется, вы можете использовать синтаксис, специально разработанный для открытия следующего доступного fd.(foo "$lockfd";...) {lockfd}>file

6
28.01.2020, 02:14

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
)
3
28.01.2020, 02:14

Теги

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