launchd plistを取得して、複雑な1行のbashコマンドを直接実行するにはどうすればよいですか?


13

いくつかのパイプとif-then-else句を含むやや複雑なbashコマンドがありgrep、複数のパラメーターを使用してシステムプログラム(など)を呼び出すことは言うまでもありません。

launchdがこの複雑なコマンドを直接ロードして実行するplistを作成する方法はありますか?(plistが複雑なコマンドを含むbashスクリプトファイルを参照するのとは対照的に)

ありがとう。

回答:


16

はい。設定するときはProgramArguments要素を、単に使用しbash、最初の引数として-c、2番目の引数として[your commands](のような任意のXMLエンティティ、交換するために覚えて>&そのように、第三などなどを):

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

配列の3番目の要素を実際のコマンドに置き換えます。


1
私はこれをテストしていませんが、私はかなり確信して、あなたは、コマンド文字列の前後に引用符をしたくないんだけど、あなたは必要にHTMLエンティティのエンコードを行うこと、それは(例えば、使用する&gt;と、&lt;代わりに><リダイレクトのため)。
ゴードンデイヴィソン

@Gordon Davisson-あなたは引用について確かに正しい-それらは配列の一つの要素にするのと同じ目的を果たす。XMLエンティティについてもあなたが正しいと確信しています。良いキャッチ。それに応じて回答を編集しました。
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.