Você pode tentar citá-lo como:
defaults write '/Users/test/Desktop/myPlist' 'My Key' "\"[My Value]\""
Estou tentando atualizar um arquivo plist usando o bash. Para algumas strings eu posso atualizar o arquivo plist, mas para algumas strings eu recebo um erro. Por exemplo,
defaults write '/Users/test/Desktop/myPlist' 'My Key' "[My Value]"
gera um erro
2011-08-10 18:49:36.208 defaults[17287:903] Could not parse: [My Value].
Try single-quoting it.
Parece que os personagens '[' e ']' parecem estar jogando fora. Como fazer isso funcionar com a string "[My Value]"?
Você pode tentar citá-lo como:
defaults write '/Users/test/Desktop/myPlist' 'My Key' "\"[My Value]\""
Nenhum dos parênteses e aspas são necessários e não são partes válidas de um comando write defaults. Aqui está um comando write defaults válido que funciona em um script bash:
defaults write com.apple.Safari Homepage "http://google.com/"
aqui está um loop de comandos write defaults que eu uso para modificar modelos de usuário no OS X:
for USER_TEMPLATE in "/System/Library/User Template"/*
do
defaults write "${USER_TEMPLATE}"/Library/Preferences/com.apple.SetupAssistant DidSeeCloudSetup -bool TRUE
defaults write "${USER_TEMPLATE}"/Library/Preferences/com.apple.desktopservices DSDontWriteNetworkStores true
defaults write "${USER_TEMPLATE}"/Library/Preferences/.GlobalPreferences.plist AppleKeyboardUIMode -int 3
done
Assim, seu exemplo formatado corretamente ficaria assim:
defaults write /Users/test/Desktop/myplist MyKey MyValue
é claro que você precisará adicionar as opções apropriadas se quiser que a chave seja escrita como algo diferente de uma string - veja os exemplos acima para as chaves booleanas e inteiras que estão sendo escritas.
Finalmente, verifique a man page para o comando defaults - ele faz um ótimo trabalho ao passar por tudo isso.
Você pode aspas simples escapar de seus colchetes envolvendo-as em aspas duplas:
Em vez de: defaults write '/Users/test/Desktop/myPlist' 'My Key' "[My Value]"
Fazer: defaults write '/Users/test/Desktop/myPlist' 'My Key' "'[My Value]'"
Observe as aspas simples adicionadas a [My Value]
Tags bash shell-script plist