我想知道如何在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:对不起我的英语,我是法国人。
答案 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
可选择防止输入的反斜杠被解释。