我有这个简单的命令来检查文件是否存在:
if [ -f /tmp/file.txt ] ; then echo "yes" ; else echo "no" ; fi
如果我直接在终端上运行它,它可以工作(显示"是"如果文件存在,"没有"如果它没有&#t; t)。但是我想在.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 :(得分:0)
尝试将Exec设置为:
bash -c 'if [ -f /tmp/file.txt ] ; then echo "yes" ; else echo "no" ; fi'
' if'命令是bash-builtin,而不是外部命令。
答案 1 :(得分:0)
您正尝试在.desktop文件中执行不支持的shell脚本编码。
“echo yes”工作的原因是.desktop执行带有参数的echo命令为“是”,这是可以接受的。
.desktop执行命令以及选项和参数。您可以在.sh文件中编写shell脚本代码,并在Exec中提及它或使用
运行代码Exec=sh -c "if [ -f /tmp/file.txt ] ; then echo 'yes' ; else echo 'no' ; fi"
这里.desktop用选项和参数执行“sh”