동적으로 파일을 생성하기 위한 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 루프가 더 좋습니다.

관련 정보