0

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

我的 sh 脚本

#!/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 被创建

4

2 回答 2

1

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

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

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

f=""
echo "Q" > ${f}
-bash: ${f}: ambiguous redirect
于 2013-08-03T11:32:02.227 回答
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 

这就是所谓的“此处文档”,可以让您避免所有这些回声和引用。

于 2013-08-03T11:28:52.670 回答