Error Atualizando o arquivo plist usando o bash

4

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]"?

    
por smokinguns 11.08.2011 / 03:51

3 respostas

3

Você pode tentar citá-lo como:

defaults write '/Users/test/Desktop/myPlist'  'My Key' "\"[My Value]\""
    
por 11.08.2011 / 03:55
1

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.

    
por 08.08.2013 / 18:35
0

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]

    
por 04.08.2017 / 05:34