2011-08-09 33 views
3

我想設置一個變量來表示一個文件的位置的字符串,當我嘗試設置變量我一直得到一個'權限被拒絕'的錯誤,因爲bash腳本試圖執行該文件。Bash腳本導出文件名爲變量

這裏是我使用

date= 07062011 
archive_dir=~/Documents/ABC/Testing 
aggregate_file= `echo ${archive_dir}"/"${date}"_Aggregated.txt"` 

我得到的錯誤代碼是:

./8000.2146701.sh:第32行:/首頁/我/文檔/ ABC /測試/ 20110706_Aggregated.txt:權限被拒絕

根據我的理解,使用反引號應該允許我將該命令的輸出並將其放入一個變量,並且它似乎不工作。當我只是自己做echo語句時,輸出就是文件路徑。

謝謝。

回答

8

的直接問題是下面的空間:

aggregate_file= 

即:

aggregate_file=`echo ${archive_dir}"/"${date}"_Aggregated.txt"` 

但是:

aggregate_file= `echo ${archive_dir}"/"${date}"_Aggregated.txt"` 

將通過簡單賦值運算符後除去空間已經工作真的應該是:

aggregate_file="${archive_dir}/${date}_Aggregated.txt" 
+0

謝謝,這解決了這個問題。指責.NET開發人員用bash腳本編造鬼混。 –

1

請勿使用反引號和回聲,只需aggregate_file="${archive_dir}/${date}_Aggregated.txt"。沒有空格,就像另一張海報中提到的。