模糊重定向 - 文件被创建

时间:2013-08-03 11:14:49

标签: shell

即使创建了输出文件,我也会收到不明确的重定向消息。

我的脚本

#!/bin/bash

# you can use read or VAR="$1" to setup these variables
SERVER_IP=
SERVER_PORT=
LANGUAGE_URL=
PROJECT_NAME=

while read f1 
 do 
OUTPUTFIL=$f1

{
    echo "<?xml version=\"1.0\" encoding=\"Shift-JIS\"?>"
    echo "<flash_cfg>"
    echo "<server ip=\"${SERVER_IP}\" port=\"${SERVER_PORT}\"/>"
    echo "<language_url>${LANGUAGE_URL}</language_url>"
    echo "<project_name>${PROJECT_NAME}</project_name>"
    echo "</flash_cfg>"
} > ${OUTPUTFIL}

 done < file 

“文件

的内容
out.xml
跑步时

:~/Documents$ bash shell.sh
shell.sh: line 22: ${OUTPUTFIL}: ambiguous redirect

然后创建了文件out.xml

2 个答案:

答案 0 :(得分:1)

那里没有矛盾,你有一个循环。

首先你读取一个有效的文件名(out.xml),并创建一个文件,然后你正在读一个无效的文件,这会产生错误信息。

示例(输入中有一个空行):

f=""
echo "Q" > ${f}
-bash: ${f}: ambiguous redirect

答案 1 :(得分:0)

我使用cat来简化代码 - 看看这是否有效:

while read f1 
do 
cat <<EOF >"$f1"
<?xml version="1.0" encoding="Shift-JIS"?>
<flash_cfg>
<server ip="${SERVER_IP}" port="${SERVER_PORT}"/>
<language_url>${LANGUAGE_URL}</language_url>
<project_name>${PROJECT_NAME}</project_name>
</flash_cfg>
EOF
done < file 

这就是所谓的“here here”,可以让你避免所有那些回声和引用。