Как я могу выполнить подстановку команд в файле .desktop?

Могу ли я выполнить замену команд в стиле bash в программе запуска .desktop? Например, нечто похожее на это:

Exec=/some/prog --arg "$(zenity --entry)"

Под этим я подразумеваю «запустить эту команду и поместить ее стандартный вывод в содержащую командную строку, а затем выполнить это».

Есть ли способ сделать это, не создавая отдельный файл сценария bash? Я нашел этот хак (запускающий bash -c '...' ), который может работать, но, может быть, есть правильный способ сделать это, например, какой-то специальный синтаксис .desktop?

РЕДАКТИРОВАТЬ : Я только что обнаружил, что $ (...) работает нормально внутри файла .desktop ... почти.

У меня все еще есть проблема с ошибкой (ненулевой код выхода) в команда подстановки прерывает выполнение команды. Как я могу это сделать? Я попытался присвоить переменную, например:

Exec= resp="$(zenity --entry)" && /some/prog --arg $resp

, но это не сработало, потому что вместо прерывания она пытается выполнить «&&» как команду, когда внутренняя команда терпит неудачу.

1
задан 1 January 2021 в 05:55

1 ответ

В итоге мне пришлось использовать bash -c.

Это способ правильной обработки подстановки команд с поддержкой ошибок при правильной передаче файлов в %F. Мне нужно расширить %F вне кавычек '...' и передать файлы в качестве аргументов, а затем снова расширить их с помощью "$@" внутри одинарные кавычки, иначе я не смогу правильно обрабатывать несколько файлов с пробелами на каждом пути.

Exec= bash -c 'r=$(zenity --entry) && /some/prog --arg "$r" "$@"' "$0" %F
1
ответ дан 1 January 2021 в 02:13

Другие вопросы по тегам:

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