2016-07-26 1 views
0

Supposons que je veux faire quelque chose avec un fichier qui contient la date actuelle. À l'invite bash je pouvais faire:Inclure la date du jour comme argument du programme dans LaunchAgents

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

Comment pourrais-je faire cela dans un plist LaunchAgents, où je n'ai pas $() disponible?

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

Répondre

2

Une possibilité est d'avoir lancer un shell pour faire l'expansion, puis exécutez la commande réelle:

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

Notez que la totalité de la commande est passée à bash comme un seul argument, puis il se divise en la commande vs argument (s) en raison de l'espace incorporé. S'il s'agit d'une commande à exécution longue, vous pouvez utiliser exec touch /Foo/$(date +%Y-%m-%d) pour que le shell se remplace par la commande plutôt que d'exécuter la commande en tant que sous-processus, puis de passer l'attente en attendant sa sortie.