Как получить список запусков для запуска сложной 1-строчной команды bash?

13

У меня есть несколько сложная команда bash, которая включает некоторые каналы и условие if-then-else, не говоря уже о вызове системной программы (например, grep) с несколькими параметрами.

Есть ли способ создать plist, который launchd будет загружать и запускать эту сложную команду напрямую? (В отличие от ссылки на plist файл сценария bash, содержащий сложную команду)

Благодарю.

UrEl
источник

Ответы:

16

Да. При настройке ProgramArgumentsэлемента, просто использовать в bashкачестве первого аргумента, в -cкачестве второго аргумента, то [your commands](напомним , заменить все XML - объекты, такие как >, &и так далее) в качестве третьего, например , так:

<key>ProgramArguments</key>
<array>
        <string>/bin/bash</string>
        <string>-c</string>
        <string>ls -1 | grep *.txt | echo &gt; allTextFiles</string>
</array>

Замените третий элемент массива вашей фактической командой.

Скотт
источник
1
Я не проверял, но я уверен , что вы не хотите кавычки строки команды, но что вам нужно HTML-сущности закодировать его (например , использование &gt;и &lt;вместо того , чтобы >и <для перенаправлений).
Гордон Дэвиссон
@ Гордон Дэвиссон - вы, конечно, правы насчет кавычек - они служат той же цели, что и превращают их в один элемент массива. Я почти уверен, что вы правы и в отношении сущностей XML. Хороший улов. Я отредактировал свой ответ соответственно.
Скотт