0

XCodeでプログラムをコンパイルするためのスクリプトで、構成ファイルをから変更する必要があります。

<string>${NAME}</string><string>My New Name</string>

そして終了後、この変更をやり直します。したがって、この行は機能します。

cat $PLIST | sed "s/\${NAME}/${NEW_NAME}/" > $PLIST  
--> Build my program
cat $PLIST | sed "s/${NEW_NAME}/\${NAME}/" > $PLIST  

しかし、時々私のファイル$PLISTは空です!そして、その理由はわかりません。これはファイル保護ですか?ファイルを強制的に書き込むにはどうすればよいですか?

4

1 に答える 1

1

おそらく競合状態のように聞こえます。catファイルを読み込もうとしていますが、I/O リダイレクトによってファイルが破壊されます。場合によっては、最初に上書きされて空のファイルが作成されることがあります。GNU を使用している場合は、フラグを使用してその場でファイルを変更sedできます。-iそれ以外の場合は、おそらく一時ファイルを使用する必要があります。

例 (GNU):

sed -i -e "s/${NEW_NAME}/\${NAME}/" "$PLIST"

また

sed -e "s/${NEW_NAME}/\${NAME}/" "$PLIST" > "${PLIST}.tmp" && mv -f "${PLIST}.tmp" "$PLIST"
于 2012-02-02T21:19:01.613 に答える