Come ottenere un programma di avvio per eseguire direttamente un comando bash a 1 riga complesso?


13

Ho un comando bash piuttosto complesso che include alcune pipe e una clausola if-then-else, per non parlare del programma di sistema (come grep) con più parametri.

C'è un modo per creare un plist che launchd caricherà ed eseguirà direttamente questo complesso comando? (A differenza del fatto che il plist fa riferimento a un file di script bash contenente il comando complesso)

Grazie.

Risposte:


16

Sì. Quando si imposta l' ProgramArgumentselemento, utilizzare semplicemente bashcome primo argomento, -ccome secondo argomento, quindi [your commands](ricordando di sostituire qualsiasi entità XML, come >, &e così via) come il terzo, in questo modo:

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

Sostituisci il terzo elemento dell'array con il tuo vero comando.


1
Non l'ho testato, ma sono abbastanza sicuro che non vuoi virgolette intorno alla stringa di comando, ma che devi codificarlo con l'entità html (ad es. Usare &gt;e &lt;invece di >e <per i reindirizzamenti).
Gordon Davisson,

@Gordon Davisson - hai certamente ragione sulle virgolette - hanno lo stesso scopo di renderlo un elemento dell'array. Sono abbastanza sicuro che anche tu abbia ragione sulle entità XML. Buona pesca. Ho modificato la mia risposta di conseguenza.
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.