2013-08-03 36 views
0

即使輸出文件被創建,我也會得到不明確的重定向消息。文件歧義重定向 - 文件被創建

out.xml 

的」

我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 

內容,同時運行

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

然而,該文件out.xml創建

回答

1

那裏沒有矛盾,你有一個循環。

所以首先你讀一個有效的文件名(out.xml),然後創建一個文件,然後你正在讀取一個無效的文件,這會產生錯誤信息。

實例(你必須輸入一個空行):

f="" 
echo "Q" > ${f} 
-bash: ${f}: ambiguous redirect 
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 

這就是被稱爲「這裏的文檔」,並讓你避免所有這些回聲的和報價。

+0

這應該是一個評論。它沒有解決實際問題。 –