Linux 如何将循环参数插入字符串的中间?
我试图使用bash脚本访问不同目录中的多个文件。目录是编号的,但是这些数字出现在目录名的中间, e、 g.Historogram1数据/Historogram2数据/ 如果我使用for循环读取这些目录,它将不起作用:Linux 如何将循环参数插入字符串的中间?,linux,bash,unix,Linux,Bash,Unix,我试图使用bash脚本访问不同目录中的多个文件。目录是编号的,但是这些数字出现在目录名的中间, e、 g.Historogram1数据/Historogram2数据/ 如果我使用for循环读取这些目录,它将不起作用: #bash script for i in {1..100} do cd histogram$idata/ ......code........ cd .. done 用花括号括住变量,如下所示: cd histogram${i}data
#bash script
for i in {1..100}
do
cd histogram$idata/
......code........
cd ..
done
用花括号括住变量,如下所示:
cd histogram${i}data
代码中发生的事情是bash试图解释变量
$idata
,这显然不是您想要的 用花括号括住变量,如下所示:
cd histogram${i}data
代码中发生的事情是bash试图解释变量
$idata
,这显然不是您想要的 可以使用花括号分隔参数名称:
cd "histogram${i}data/"
顺便说一句,我建议将循环体包装在括号中,以便它在子shell中运行。这使得跟踪当前目录变得更容易,因为cd
仅在子shell中有效。因此:
for i in {1..100} do
(
cd "histogram${i}data/"
......code........
)
done
可以使用花括号分隔参数名称:
cd "histogram${i}data/"
顺便说一句,我建议将循环体包装在括号中,以便它在子shell中运行。这使得跟踪当前目录变得更容易,因为cd
仅在子shell中有效。因此:
for i in {1..100} do
(
cd "histogram${i}data/"
......code........
)
done
bash脚本:
for i in {1..100}
do
cd histogram${i}data/
......code........
cd ..
done
bash脚本:
for i in {1..100}
do
cd histogram${i}data/
......code........
cd ..
done