如何将循环参数插入字符串的中间?

时间:2013-06-26 20:56:26

标签: linux bash unix

我正在尝试使用bash脚本来访问位于不同目录中的多个文件。目录已编号,但数字显示在目录名称的中间

  

e.g。 histogram1data / histogram2data /

如果我使用for循环来读取这些目录,则它不起作用:

#bash script

for i in {1..100}
  do 

    cd histogram$idata/
    ......code........
    cd ..

 done

3 个答案:

答案 0 :(得分:8)

用大括号括起变量,如下所示:

cd histogram${i}data

你的代码中发生的事情是bash试图解释变量$idata,这显然不是你想要的。

答案 1 :(得分:2)

您可以使用花括号来分隔参数名称:

cd "histogram${i}data/"

顺便提一下,我建议将循环体包装在括号中,因此它在子shell中运行。这样可以更容易地跟踪当前目录,因为cd只会在子shell中生效。所以:

for i in {1..100} do 
  (
    cd "histogram${i}data/"
    ......code........
  )
 done

答案 2 :(得分:2)

bash脚本:

for i in {1..100}
do 
    cd histogram${i}data/
    ......code........
    cd ..
done