Вы можете использовать /usr/libexec/PlistBuddy
для этого, который, кажется, включен в OS X, начиная с 10.5 ( man page ). Пример:
file="$HOME/yourfile"
/usr/libexec/PlistBuddy -c "Print" "$file"
И вы можете назначить интересующие вас переменные следующим образом:
for var in GameDir GameEXE GameFlags ; do
val=$( /usr/libexec/PlistBuddy -c "Print $var" "$file" )
eval "export $var='$val'"
echo "$var = $val"
done
Это кажется более читабельным, чем регулярные выражения bash / sed / awk, и, поскольку это инструмент, относящийся к plist, я предполагаю, что он надежен для извлечения значений. Просто помните, что ключи чувствительны к регистру.