在LaunchAgents中包含当前日期作为程序参数

时间:2016-07-26 18:06:15

标签: bash launchd launch-agent

假设我想对包含当前日期的文件执行某些操作。在bash提示符下我可以这样做:

$ touch /Foo/$(date +%Y-%m-%d)

我怎么能在LaunchAgents plist中做到这一点,我没有$()可用?

<key>ProgramArguments</key>
<array>
  <string>touch</string>
  <string>/Foo/CURRENT-DATE-HERE</string>
</array>

1 个答案:

答案 0 :(得分:2)

一种可能性是让它启动一个shell来进行扩展,然后运行真正的命令:

<key>ProgramArguments</key>
<array>
  <string>bash</string>
  <string>-c</string>
  <string>touch /Foo/$(date +%Y-%m-%d)</string>
</array>

请注意,整个命令作为单个参数传递给bash,然后由于嵌入空间而分成命令vs参数。如果它是一个长时间运行的命令,您可能希望使用exec touch /Foo/$(date +%Y-%m-%d),以便shell将用命令替换自己,而不是将命令作为子进程运行,然后挂出等待它退出。