即使创建了输出文件,我也会收到不明确的重定向消息。
我的脚本
#!/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
答案 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”,可以让你避免所有那些回声和引用。