Как получить и сохранить bash «jobspec» для фоновой команды? - PullRequest
0 голосов
/ 13 мая 2018

Когда я запускаю команду в фоновом режиме через command &, идентификатор процесса команды можно получить из переменной $!. Это значение можно сохранить и использовать в последующих командах, таких как kill.

Однако для некоторых встроенных модулей, в частности fg, требуется «спецификация заданий», которая представляет собой специальную оболочку, начинающуюся с %. Поэтому, если я запускаю фоновую команду, я могу затем использовать ее передним планом с помощью command & fg %+, потому что %+ - это задание самой последней заданной команды.

Если я запускаю две команды в фоновом режиме, я могу перенаправить первую команду с помощью %-, которая является спецификацией заданий, которая является предыдущим значением %+: command1 & command2 & fg %-.

Но это не может быть обобщено на три команды. В общем, необходимо сохранить %nnn спецификацию заданий для команды, которая только что была просмотрена в фоновом режиме. Это может быть сделано чем-то вроде jobs | sed -e '$!d' -e 's/^\[\([0-9]\+].*$/%\1/, но должен быть лучший способ.

...