bashを使用したplistファイルの更新エラー


4

bashを使用してplistファイルを更新しようとしています。一部の文字列ではplistファイルを更新できますが、一部の文字列ではエラーが発生します。例えば

defaults write '/Users/test/Desktop/myPlist'  'My Key' "[My Value]"

エラーを投げる

2011-08-10 18:49:36.208 defaults[17287:903] Could not parse: [My Value].
Try single-quoting it.

「[」と「]」の文字がスローされているように見えます。文字列「[My Value]」でこれを機能させる方法は?


一重引用符で試してみてください...?
ワッファー

回答:


3

次のように、単一引用符で囲むことができます。

defaults write '/Users/test/Desktop/myPlist'  'My Key' "\"[My Value]\""

2011-08-10 19:05:44.531 defaults [17323:903]解析できませんでした:\ '[My Value] \'。一重引用符で囲みます。うまくいかなかった:(
smokinguns

これは機能しているように見えました:デフォルトでは「/ Users / test / Desktop / myPlist」と書きます「My Key」「\」[My Value] \ ""なぜだろう?
smokinguns

さて、私の答えを編集します。
ワッファー

1

括弧や引用符は不要であり、デフォルトの書き込みコマンドの有効な部分ではありません。bashスクリプトで機能する有効なデフォルトの書き込みコマンドは次のとおりです。

defaults write com.apple.Safari Homepage "http://google.com/"

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

したがって、正しくフォーマットされた例は次のようになります。

defaults write /Users/test/Desktop/myplist MyKey MyValue

もちろん、キーを文字列以外の何かとして書き込む場合は、適切なスイッチを追加する必要があります。書き込まれるブールキーと整数キーについては、上記の例を参照してください。

最後に、manページのdefaultsコマンドを確認してください。これはすべての作業をうまく処理します。


0

二重引用符で囲むことにより、括弧を一重引用符でエスケープできます。

の代わりに: defaults write '/Users/test/Desktop/myPlist' 'My Key' "[My Value]"

行う: defaults write '/Users/test/Desktop/myPlist' 'My Key' "'[My Value]'"

に単一引用符が追加されていることに注意してください [My Value]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.