Пытаясь решить другие проблемы, я встретил следующий сценарий bash
в ответе Алекса Б. на этот вопрос :
#!/bin/bash
(
# Wait for lock on /var/lock/.myscript.exclusivelock (fd 200) for 10 seconds
flock -x -w 10 200 || exit 1
# Do stuff
) 200>/var/lock/.myscript.exclusivelock
У меня проблемы с пониманием этого сценария. Согласно инструкции flock's
, дескриптор файла (200
) в flock -x -w 10 200
должен относиться к открытому файлу.
Где этот дескриптор / файл открыт? Если это 200>/var/lock/.myscript.exclusivelock
, который открывает дескриптор, это будет означать, что эта часть выполняется до подоболочки, что противоположно тому, что я думал, когда я первоначально смотрел на этот скрипт.
Это подводит меня к моему вопросу: каков порядок выполнения подоболочек в bash по отношению к основному сценарию (т. Е. К сценарию, открывающему подоболочки), а также по отношению к другим подоболочкам, которые может вызывать тот же основной сценарий?
Из прочтения других статей и руководства по bash я полагаю, что я только узнал, что подоболочки выполняются «одновременно», но я не видел ни одного утверждения, объясняющего, есть ли исключения из этого (одно очевидное исключение было бы, когда основной сценарию потребуется вывод подоболочки, например echo foo $(cat bar)
).