KSH/bash 用于动态创建文件

KSH/bash 用于动态创建文件

我在该目录上有一个目录名称 tmp,基于文件名类别,我想动态创建“n”个文件。

   if [ ! -d tmp ]
then
    mkdir tmp
fi

TEMPDIR=$HOME/tmp

cd $TEMPDIR

array_FileName_category[0]="File1"
array_FileName_category[1]="File2"
array_FileName_category[2]="File3"
array_FileName_category[3]="File4"
a=0
while [ $a -le 9 ]
do
### Creating Source Files
${array_FileName_category[$a]}_file=$TEMPDIR/${array_FileName_category[$a]}_file_$$
a=`expr $a + 1`
done

但这不起作用并给出以下错误:

File Not found with array prefix.
and the other error is for zero index of array ${array_FileName_Category[$a]} is not working

我想要的输出是:如果存在 FileCategory“Sports”,则在 tmp 目录中使用 while 循环,它将创建一个带有前缀 Sports 的文件

答案1

因为 korn shell 中的数组管理与其他编程语言相距甚远,所以您可以尝试以下操作:而不是这样:

while [ $a -le 9 ]
do
${array_FileName_category[$a]}_file=$TEMPDIR/${array_FileName_category[$a]}_file_$$
a=`expr $a + 1`
done

尝试这个:

while [ $a -le 9 ]
do
b=$array_FileName_category[$a]
touch $TEMPDIR/${b}_file_$$
a=`expr $b + 1`
done

PS 和恕我直言 for 循环会更好用于此目的

相关内容