【发布时间】:2019-03-27 04:33:33
【问题描述】:
我正在尝试在其中创建 2 个文件夹和一些文件。但它不能创建超过第一个文件夹和第一个文件。代码说它无法创建第一个文件夹,因为它存在。甚至不要尝试创建其余的文件和文件夹。
这是我尝试过的
#!/bin/bash
declare -a arrRel=(rel20 rel21)
declare -a arrVar=(pt_el pt_mu)
declare -a arrVarTitle=("electron p_T" "muon p_T")
for i in "${arrRel[@]}"
do
mkdir "${arrRel[$i]}"
cd "${arrRel[$i]}"
for j in "${arrVar[$j]}"
do
textFile=text_${arrRel[$i]}_${arrVar[$j]}.txt
targetDir=Desktop/samples
cat >${textFile} <<EOF
"some tex"
EOF
done #arrVar
cd ../ #cd arrRel
done #for loop over releases
总结一下,应该有两个文件夹,rel20 和 rel21,两个文件夹里面都有两个文本文件。但我只得到文件夹 rel20 和其中只有一个文本文件。
如果你能指出为什么这不起作用,我将不胜感激。
【问题讨论】:
-
在循环的第一次迭代中,
i=rel20。${arrRel[rel20]}是什么? -
我建议不要在脚本中像这样使用
cd;某些错误(执行或逻辑)太容易抛出cd序列,并且您最终会在意外位置创建文件。而不是cd somedir后跟cat >somefile,而是使用cat >somedir/somefile。