Почему «файл блокировки является лучшим подходом, если ресурс не является обычным файлом, поэтому использование методов для блокировки файлов не применяется»?

Краткий ответ ( мои слова):

«слова», которые существуют внутри теста ( [[ и ]] или [ и ] ) после разделения на пробелы становятся первичными. Слова могут быть (! ), ( -f ) или значениями ( $ var ). Такие слова также являются «аргументами», если первое [ или [[] понимается как команда («тест»).

После разделения, (некоторые) два слова вместе. Подобные (-f) и ($ var) называются «унарными первичными цветами». И (некоторые) три слова называются «двоичными первичными».

Но это описание не так точно в некоторых случаях использования и немного отклоняется.

Более длинный ответ:

Концепция довольно старая (из оболочки Bourne) и подробно описана в спецификации POSIX (в качестве примера) :

ОПЕРАНДЫ
Приложение должно гарантировать, что все операторы и элементы основных параметров представлены тестовой утилите как отдельные аргументы .
Для построения выражения можно использовать следующие основные параметры:

Were выражение означает то, что находится внутри фигурных скобок: [выражение] .

Обратите внимание, что здесь операторы операндов и означают аргументы (слова, разделенные пробелами), передаваемые тестовой утилите.

Концепция выражения также используется в man bash , например, рядом с началом поиска [[выражение]] (одна из форм «составных команд») :

Выражения состоят из основных , описанных ниже в разделе УСЛОВНЫЕ ВЫРАЖЕНИЯ.
Условные операторы, такие как -f, должны быть без кавычек, чтобы их можно было распознать как основные.

Final

И, наконец, вы можете выполнить поиск на странице спецификации POSIX, указанной выше и снова здесь , для этой строки (и следующих строк):

Основные параметры с двумя элементами формы:
-primary_operator primary_operand
известны как унарные основные параметры .

В следующих строках предпринимается попытка определения первичных чисел с помощью выражений, имеющих до 4 аргументов (слова, разделенные пробелами, с чего я начал).

Нет четырех основных слов (если ! не считается частью (инвертированных) трех основных слов).

Это описание POSIX не работает во многих случаях и является основной причиной разработки встроенного [[]] .

-1
19.10.2018, 00:10
1 ответ

Если контролируемый ресурс вовсе не является обычным файлом , то вы не можете использовать существование этого обычного файла в качестве собственного файла блокировки; тогда вам нужно будет создать отдельный файл для блокировки.

2
28.01.2020, 05:08

Теги

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