Я думаю, вы говорите о rlwrap.
rlwrap выполняет указанную команду, перехватывая ввод пользователя, чтобы обеспечить редактирование строк readline, постоянную историю и завершение. rlwrap старается быть полностью прозрачным - вы (или ваша оболочка) не должны заметить никакой разницы между командой command и командой rlwrap - кроме добавленной функциональности readline, конечно. Это должно быть верно даже тогда, когда вы перенаправляете, пересылаете и посылаете сигналы от и к command, или когда command манипулирует настройками своего терминала. rlwrap man page
find. -exec./pgm1 \; -o -exec./pgm2 \; -print
|---expr1-----| |----expr2------------|
Код выхода pgm1
всегда 1 , что означает, что expr1 ложно. Согласно справочной странице find
будет вычислять выражение expr2, которое в данном случае равно pgm2
.
Итак, и pgm1
, и pgm2
были казнены.
Ваш тест не демонстрирует различий в приоритетах; попробуй
find. -exec./pgm1 \; -print -o -exec./pgm2 \;
, чтобы увидеть разницу.-a
(или ни один оператор )не связывается сильнее, чем -o
, поэтому -print
связан с -exec./pgm1
и никогда не вычисляется, поскольку pgm1
всегда терпит неудачу.
В вашем примере для каждого найденного файла find
запускает pgm1
, который терпит неудачу, в результате чего find
оценивает другую ветвь оператора -o
, поэтому выполняется pgm2
, который завершается успешно, а затем по -print
.
Таким образом, в основном более высокий приоритет -и не означает, что он выполняется первым, но это означает, что он выполняется последним... То есть «-a связывает больше, чем -o».
Подводя итог еще раз, чтобы посмотреть, получилось ли у меня на этот раз :find всегда оценивает предикаты таким образом, что он разбивает командную строку на две -«левую» и «правую» части. Когда он решает, как его разделить, приоритет оператора берет на себя управление, и строка разделяется на операторе с наименьшим приоритетом. Затем сначала выполняется левая часть, а затем, в конце концов, правая часть. И если каждая часть имеет более двух предикатов, соединенных логическим оператором, она выполняется рекурсивно таким же образом.