无法将stdout重定向到完整路径指定的文件

时间:2015-07-04 15:35:16

标签: linux bash sed io-redirection

CONFIG_FILE=${WWW_DIR}/${WORDPRESS_TEST_DIR}/wp-config.php

有效:

sed "${SED_ARG}" ${CONFIG_FILE} >| ${CONFIG_FILE}

(我得到的只是一个空文件)。当我用实际路径字符串替换变量时,或者当我用“。

转义路径时,它也不起作用

确实工作:

sed "${SED_ARG}" ${CONFIG_FILE} >| wp-config.php
mv wp-config.php ${CONFIG_FILE}

所以我认为sed调用工作正常。

奇怪的是,确实也有效:

echo TEST >| ${CONFIG_FILE}

所以sed部分可能就是问题所在。我很无能为力。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

重定向打开文件以进行写入(不附加),这使得它成为新的空文件,然后执行sed命令。

您可以使用sed的-i标志来进行就地替换:

sed -I "${SED_ARG}" "${CONFIG_FILE}"

我还在${CONFIG_FILE}附近加上引号,以避免出现意外行为(如果它包含任何特殊字符)。