2011-08-09 31 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"。没有空格,就像另一张海报中提到的。