1

我正在尝试使用 bash 脚本来访问不同目录中的多个文件。目录有编号,但编号出现在目录名称的中间,

例如 histogram1data/ histogram2data/

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

#bash script

for i in {1..100}
  do 

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

 done
4

3 回答 3

8

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

cd histogram${i}data

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

于 2013-06-26T20:57:57.220 回答
2

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

cd "histogram${i}data/"

顺便说一句,我建议将循环体用括号括起来,这样它就可以在子shell 中运行。这使得跟踪当前目录变得更容易,因为它cd只会在子 shell 内生效。所以:

for i in {1..100} do 
  (
    cd "histogram${i}data/"
    ......code........
  )
 done
于 2013-06-26T20:58:40.563 回答
2

bash脚本:

for i in {1..100}
do 
    cd histogram${i}data/
    ......code........
    cd ..
done
于 2013-06-26T20:59:10.027 回答