如何获得启动的plist来直接运行复杂的1行bash命令?


13

我有一个稍微复杂的bash命令,其中包括一些管道和if-then-else子句,更不用说grep使用多个参数调用系统程序了(例如)。

有没有一种方法可以创建一个将启动的plist直接加载并运行此复杂命令?(与让plist引用包含复杂命令的bash脚本文件相反)

谢谢。

Answers:


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;而不是><用于重定向)。
戈登·戴维森

@Gordon Davisson-您对引号肯定是正确的-它们的作用与使之成为数组的元素相同。我很确定您对XML实体也是正确的。接得好。我已经相应地编辑了答案。
斯科特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.