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 回答