Как использовать патч с высоким приоритетом в dmenu

ERRtrapне сработает, если код ошибки будет немедленно «перехвачен», что означает, что вы можете использовать операторы ifи т. д. без необходимости постоянно включать и выключать перехват ошибок.. Однако вы не можете использовать проверку $?для управления потоком, потому что, когда вы доберетесь до этой проверки, у вас уже (может быть )неперехваченная ошибка.

Если у вас есть команда, которую вы ожидаете с ошибкой --, и вы не хотите, чтобы эти сбои вызывали trap, вам просто нужно отловить ошибку. Оборачивать их в оператор ifнеуклюже и многословно, но это сокращение прекрасно работает:

/bin/false || :  # will not trigger an ERR trap

Однако, если вы хотите что-то сделать, когда команда не удалась, ifздесь подойдет:

if ! /bin/false; then
    echo "this was not caught by the trap!"
fi

Или, альтернативно, elseтакже перехватывает состояние ошибки:

if /bin/false; then
    : # dead code
else
    echo "this was not caught by the trap!"
fi

В целом, set -eи trap "command" ERRотключаются только в том случае, если существует условие ошибки, которое не учитывается немедленно и по существу.

0
20.09.2020, 20:52
1 ответ

Извините за такой поздний ответ. Я тоже искал ответ минуту назад. Оказывается это легко. Вам нужно передать его в качестве входного аргумента при вызове dmenu, например:

dmenu_run -hp pcmanfm,lf,st,code

или:

dmenu_run -hp $(cat hpList)
2
18.03.2021, 23:03

Теги

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