Linux桌面文件Bash命令中的Date命令

Linux桌面文件Bash命令中的Date命令,linux,Linux,这是关于linux上date命令的一个相当具体的问题,因为它是桌面文件中bash命令的一部分 环境:ubuntu 16.04 我有一个桌面文件,它执行一个bash命令,该命令运行脚本并将其输出重定向到一个有日期的日志文件。如果直接从终端运行,bash命令本身工作正常: bash -c "/path/to/script &> /var/log/$(date +%Y%m%d).out" 上面的命令创建一个文件,如/var/log/20190413.out。但是,如果将此命令用作桌面文

这是关于linux上date命令的一个相当具体的问题,因为它是桌面文件中bash命令的一部分

环境:ubuntu 16.04

我有一个桌面文件,它执行一个bash命令,该命令运行脚本并将其输出重定向到一个有日期的日志文件。如果直接从终端运行,bash命令本身工作正常:

bash -c "/path/to/script &> /var/log/$(date +%Y%m%d).out"
上面的命令创建一个文件,如
/var/log/20190413.out
。但是,如果将此命令用作桌面文件的一部分,则会运行脚本,但不会创建输出文件。这是一个示例桌面文件:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=bash -c "/path/to/script &> /var/log/$(date +%Y%m%d).out"
这似乎是特定于
date
命令的。例如,如果我在桌面文件中将其替换为
$(主机名)
,它将登录到
/var/log/.out


以前有人遇到过这种情况吗?幕后有什么奇怪的事情发生吗注意:我不是在找工作,而是想了解我做错了什么。谢谢

这是由于date命令的参数中有百分号。它是桌面文件中的一个特殊字符,即使它位于双引号参数中。若要对其进行转义,请改用“%%”。这是有据可查的