2015-08-03 2 views
0

У меня есть эта простая команда, чтобы проверить, существует ли файл:Desktop файл не выполняют команды

if [ -f /tmp/file.txt ] ; then echo "yes" ; else echo "no" ; fi 

Если я запускаю его direcly на терминале, он работает (показывает «да», если файл существует и «нет» если это не так). Но я хочу, чтобы выполнить эту команду внутри .desktop файл, используя его в качестве значения Exec ключа:

[Desktop Entry] 
Version=1.0 
Type=Application 
Exec=if [ -f /tmp/file.txt ] ; then echo "yes" ; else echo "no" ; fi 
StartupNotify=true 
Terminal=false 
Categories=Utility;X-XFCE;X-Xfce-Toplevel; 
MimeType=x-scheme-handler/custom 
Name=Custom Test 
Comment=Custom 

Если я пытаюсь выполнить xdg-open custom:// я custom://: error opening location: The specified location is not supported, но если я изменить Exec значение echo "yes" и выполнить xdg-open custom://, это показывает yes на терминале.

Что мне здесь не хватает?

+0

Это, вероятно, не запустить оболочка. Вы можете попробовать его с помощью 'sh -c '...'' или, желательно, поместив инструкцию в скрипт и указав это. –

ответ

0

Вы пытаетесь выполнить кодировку сценария оболочки в файле .desktop, который не поддерживается.

Причина, по которой работает «эхо-да», - это рабочий процесс, выполняющий команду echo с параметром «да», который является приемлемым.

.desktop выполняет команды вместе с параметрами и параметрами. Вы можете написать код сценария оболочки в .sh файл и упомянул его в Exec или запустить код с помощью

Exec=sh -c "if [ -f /tmp/file.txt ] ; then echo 'yes' ; else echo 'no' ; fi" 

Здесь .desktop выполняет «ш» с вариантами и Params

0

Попробуйте настроить Exec на:

bash -c 'if [ -f /tmp/file.txt ] ; then echo "yes" ; else echo "no" ; fi' 

«тогда» команда Баш встроенная_команда_оболочки, а не внешняя команда.

Смежные вопросы