2016-07-26 9 views
0

Предположим, я хочу что-то сделать с файлом, который содержит текущую дату. В Баш строке я мог бы просто сделать это:Включить текущую дату в качестве аргумента программы в LaunchAgents

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

Как я мог бы сделать это в PLIST LaunchAgents, где у меня нет $() доступной?

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

ответ

2

Одна из возможностей заключается в его запустить оболочку, чтобы сделать расширение, а затем запустить настоящую команду:

<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), чтобы оболочка заменила себя командой, а не выполняла команду в качестве подпроцесса, а затем вывешивала ее, ожидая ее выхода.

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

  • Нет связанных вопросов^_^