動的にファイルを生成するための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 シェルの配列管理は、他のプログラミング言語から離れているので、次のことを試すことができます。代わりに:

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とIMHO forループがより良いです。

関連情報