我需要在安裝後創建.plist文件,我唯一可以使用的選項是bash腳本。我要創建一個foo.plist爲/Library/launchAgents
與一個bash腳本,我已經用下面的命令:使用終端或bash腳本創建並寫入.plist
cd /Library/launchAgents
touch foo.plist
現在我需要將內容寫入例如該文件的.plist像這樣:
".plist contents" >> foo.plist
是否有一個命令可以在終端中執行此操作?
我需要在安裝後創建.plist文件,我唯一可以使用的選項是bash腳本。我要創建一個foo.plist爲/Library/launchAgents
與一個bash腳本,我已經用下面的命令:使用終端或bash腳本創建並寫入.plist
cd /Library/launchAgents
touch foo.plist
現在我需要將內容寫入例如該文件的.plist像這樣:
".plist contents" >> foo.plist
是否有一個命令可以在終端中執行此操作?
你的問題沒有規定得非常好,你已經得到了什麼,或者爲什麼你需要做的是在bash
,但如果你必須這樣做的,你可以做這樣的:
#!/bin/bash
VERSION=2.12
cat > foo.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildAliasOf</key>
<string>ProEditor</string>
<key>BuildVersion</key>
<value>$VERSION</value>
</dict>
</plist>
EOF
所以,你把它保存在一個名爲Buildplist
文件,然後這樣做是爲了使其可執行
chmod +x Buildplist
然後運行它通過鍵入以下:
./Buildplist
你可以把它直接改變第二行是這樣寫的plist文件到/Library/launchAgents
:
cat > /Library/launchAgents/yourApp/yourApp.plist <<EOF
你可以把它接受的參數了。所以,如果你想通過作者的第一個參數,你可以做這樣的:
#!/bin/bash
VERSION=2.12
AUTHOR="$1"
cat > foo.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildAliasOf</key>
<string>ProEditor</string>
<key>BuildVersion</key>
<value>$VERSION</value>
<author>$AUTHOR</author>
</dict>
</plist>
EOF
,然後運行
./Buildplist "Freddy Frog"
通過「弗雷迪青蛙」的作者。
如果你想避免覆蓋已經存在任何plist文件,你可以做這樣的:
#!/bin/bash
PLISTFILE="/Library/launchAgents/yourApp/yourApp.plist"
# If plist already exists, do not overwrite, just exit quietly
[ -f "$PLISTFILE" ] && exit
cat > "$PLISTFILE" <<EOF
...
...
EOF
我把plist文件名中的變量來簡化維護,避免鍵入它兩次。
PlistBuddy是你想要的。
/usr/libexec/PlistBuddy Info.plist
File Doesn't Exist, Will Create: Info.plist
然後添加一個條目,像這樣的文件,
/usr/libexec/PlistBuddy -c 'add CFBundleIdenfier string com.tencent.myapp' Info.plist
順便說一句,man plist
,man plutil
可以對你有所幫助。
你想寫入plist的plist內容在哪裏?我的意思是你有一份文件列表嗎?與他們相應的價值?它們是否在shell變量中?爲什麼你必須使用'bash',爲什麼你不能使用編輯器? – 2014-12-09 13:22:59
是的,我有一個工作.plist文件。我需要使用bash,因爲安裝程序將運行這個bash腳本。因此在安裝過程中將該過程自動化爲後安裝步驟。 – Mubasher 2014-12-10 04:30:52