Bash - Как показать значение переменной вместо имени в описании фонового процесса? - PullRequest
1 голос
/ 17 февраля 2020

У меня есть процесс запуска функции, подобный этому:

hello (){
  year=2001

  longRunProcess $year
}

Когда я выполнил эту функцию в фоновом режиме, описание выполняющегося процесса выглядит так:

[1] longRunProcess $year

, где я пропустил информация года $. Это вызывает у меня некоторые проблемы при запуске моей функции hello () в a для l oop, из-за чего я не могу сказать, какой процесс года еще выполняется, а какой нет.

Есть ли способ показать $ year in process в качестве его значения вместо его имени?

1 Ответ

3 голосов
/ 17 февраля 2020

Если ничего другого, вы можете использовать eval для расширения значения до , когда команда вызывается, а не во время:

$ arg=2001
$ sleep "$arg" &
[1] 4088610
$ eval "sleep ${arg@Q} &"
[2] 4088612
$ jobs
[1]-  Running                 sleep "$arg" &
[2]+  Running                 sleep '2001' &

${arg@Q} оболочка экранирует переменную arg, чтобы убедиться, что eval не будет fr agile или небезопасным, если аргумент изменится с простого числа на произвольный текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...