วิธีรับ Plist Plist เพื่อรันคำสั่ง bash ที่ซับซ้อน 1 บรรทัด


13

ฉันมีคำสั่ง bash ที่ค่อนข้างซับซ้อนซึ่งรวมไปถึงไพพ์บางส่วนและประโยค if-then-else ไม่พูดถึงการเรียกโปรแกรมระบบ (เช่นgrep) ที่มีพารามิเตอร์หลายตัว

มีวิธีสร้าง plist ที่ launchd จะโหลดและรันคำสั่งที่ซับซ้อนนี้โดยตรงหรือไม่? (ตรงข้ามกับการที่ผู้อ้างอิงอ้างอิงไฟล์ bash script ที่มีคำสั่งที่ซับซ้อน)

ขอบคุณ

คำตอบ:


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-entity (เช่นใช้&gt;และ&lt;แทน>และ<เปลี่ยนเส้นทาง)
Gordon Davisson

@Gordon Davisson - คุณพูดถูกเกี่ยวกับราคา - มันมีจุดประสงค์เดียวกับการทำให้มันเป็นองค์ประกอบหนึ่งของอาร์เรย์ ฉันค่อนข้างแน่ใจว่าคุณถูกต้องเกี่ยวกับเอนทิตี XML เช่นกัน จับดี. ฉันแก้ไขคำตอบของฉันแล้ว
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.