С POSIX awk
вы не можете этого сделать.
Назначение в форме -v назначение
было определено как:
Операнд, который начинается с буквенного символа из переносимого набора символов (см. таблица в XBD Portable Character Set), за которой следует последовательность символов подчеркивания, цифр и алфавитов из переносимого набора символов, за которыми следует символ '=' , должны укажите присвоение переменной, а не имя пути. Символы перед '=' представляют имя переменной awk; если это имя является зарезервированным словом awk (см. Грамматику), поведение будет { {1}} undefined
Это разрешает только awk
переменную имя .
Когда вы устанавливаете элемент массива awk
с:
myarray[index]=value
myarray [index]
is lvalue , а не имя переменной . Так что это незаконно.
Любые переменные и поля могут быть установлены с помощью:
lvalue = expression
с lvalue может быть переменными, массивом с индексом или селектором полей.
Вы не только отвечаете на свой вопрос, ссылка, которую вы добавили в конце, также отвечает на ваш вопрос.
Когда процесс останавливается, вся обработка сигналов прекращается, за исключением SIGCONT и SIGKILL -, которые на практике обрабатываются операционной системой.
Это означает, что SIGHUP может быть обработан только после возобновления процесса, что происходит, когда SIGCONT получен и обработан, поэтому, даже если вы отправляете SIGHUP, за которым следует SIGCONT, они будут обрабатываться в обратном порядке.
Теперь, на практике, ядро, отправляющее SIGHUP раньше, приведет к меньшему количеству действий, выполняемых процессом между обработкой SIGCONT и обработкой SIGHUP, так как второй уже поставлен в очередь для обработки.