你的问题并没有很好地说明你得到了什么,或者为什么你需要在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
你也可以让它接受参数。所以如果你想传递Author作为第一个参数,你可以这样做:
#!/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文件的名字放在了一个变量中,避免输入两次。