如何在linux命令中输入变量?

时间:2014-08-04 08:37:07

标签: linux shell

我想知道如何在linux命令中输入变量,这是我的代码:


while read line
do
$site=$line
# execute extract command foreach line(each line contain a site name)
../../data/PROG/launch extractdata -hdf 2013-01-01,2014-01-01 -site  "$site"  >data/hour_$site_file.txt
 done < data/extract_site.txt

我解释说:

此文件&#34; data / extract_site.txt&#34;包含站点名称列表,每行是站点名称,并且对于每个站点我想要提取数据并将命令的结果放在名为&#34; hour_ $ site_file.txt&#34;的文件中。 例如,我有一个站点名称&#34; OPE&#34;,命令将是: ../../data/PROG/launch extractdata -hdf 2013-01-01,2014-01-01 -site OPE 并将调用文件名:hour_OPE_file.txt

当我执行我有错误时:未定义命令&#34; = OPE&#34;

我是shell的初学者,有什么帮助吗?

提前致谢。

PS:对不起我的英语,我是法国人。

2 个答案:

答案 0 :(得分:1)

变量名称为L值不需要$。

链接的变量名称应括在括号中,如小时_ $ {site} _file.txt

while read line
do
site=$line
# execute extract command foreach line(each line contain a site name)
../../data/PROG/launch extractdata -hdf 2013-01-01,2014-01-01 -site  "$site"  >data/hour_${site}_file.txt
 done < data/extract_site.txt

答案 1 :(得分:1)

使用大括号分隔参数名称并使用引号来防止分词:

while read -r line; do
    site=$line
    ../../data/PROG/launch extractdata -hdf 2013-01-01,2014-01-01 -site "$site" > "data/hour_${site}_file.txt"
done
  • 为变量分配值时,请勿向目标添加前导$$site=$line错误。
  • -r可选择防止输入的反斜杠被解释。