Jak uzyskać uruchomiony plist, aby bezpośrednio uruchomić złożone 1-wierszowe polecenie bash?

13

Mam nieco złożoną komendę bash, która zawiera niektóre potoki i klauzulę „jeśli-to-jeszcze”, nie wspominając już o wywołaniu programu systemowego (np. grep) Z wieloma parametrami.

Czy istnieje sposób, aby utworzyć listę, która zostanie uruchomiona, załaduje i uruchomi to złożone polecenie bezpośrednio? (W przeciwieństwie do odwoływania się do polecenia plist do pliku skryptu bash zawierającego złożone polecenie)

Dzięki.

UrEl
źródło

Odpowiedzi:

16

Tak. Podczas konfigurowania ProgramArgumentselementu, wystarczy użyć bashjako pierwszy argument, -cjako drugi argument, a następnie [your commands](pamiętając, aby wymienić wszystkie podmioty, takie jak XML >, &i tak dalej) jako trzeci, tak jak poniżej:

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

Zamień trzeci element tablicy na rzeczywiste polecenie.

Scott
źródło
1
Nie testowałem tego, ale jestem prawie pewien, że nie chcesz cytatów wokół ciągu poleceń, ale musisz go zakodować za pomocą html-bytu (np. Użyj &gt;i &lt;zamiast >i <dla przekierowań).
Gordon Davisson
@Gordon Davisson - z pewnością masz rację co do cytatów - służą one temu samemu celowi, co uczynienie go jednym z elementów tablicy. Jestem pewien, że masz również rację co do encji XML. Dobry chwyt Odpowiednio zredagowałem swoją odpowiedź.
Scott,