2012-11-21 52 views
0

我正在嘗試從文件中創建mysql數據庫輸入。但db filename將來自變量filename= /file/path/name.sql。但是當使用<輸入時,它顯示ambiguous redirect錯誤。用於文件輸入的Linux Shell「變量」<「

我完整的腳本是:

filename= /var/backup/mydatabase.sql 
echo $filename 
mysql -uxxxx -pxxxx -hxxxx databasename < $filename 

,輸出是:

/var/backup/mydatabase.sql 

./myscript.sh: line 3: $filename: ambiguous redirect 

請注意以下內容:

  • 請假設需要某種原因
  • filename變量
  • 我是root用戶

所以在這裏我的問題是:

  • 如何使用shell variables文件輸入目的是什麼?各地=
+0

確實沒有理由以root用戶身份運行mysql客戶端...... –

+0

哦真的..? :) –

+0

哦,真的!不要做任何根本不是絕對必要的事情。 –

回答

3
filename= /var/backup/mydatabase.sql 
     ^

空間,當你定義一個變量是不允許的。
請刪除=後的空格。


./myscript.sh: line 3: $filename: ambiguous redirect 

此錯誤消息告訴你那$filename可以擴展到多字。
請用雙引號"$filename"


確保腳本文件在行尾沒有任何不可見的ctrl-chars。
使用命令xxd myscript.sh進行檢查。

+0

是的。您將'filename'設置爲空,然後嘗試運行'/ var/backup/mydatabase.sql'作爲命令,這應該在模糊的重定向之前產生錯誤消息。 –

+0

NO。它不起作用:( –

+0

然後你沒有做到這一點,分配應該是'filename =/var/backup/mydatabase.sql'。任何地方都沒有空格。如果你這樣做,但仍然有錯誤,那麼你或者在兩行之一中輸入變量名,或者簡化版的問題太簡化了。 –