使用数组项作为文件名创建文件



我正在尝试创建给定ID及其各自日期的文件。我想使用数组项来设置这些文件的名称。问题是创建文件时的结果不是我所期望的。我将不胜感激你的帮助。

期望输出:

我想创建以下格式的文件:

FILE_300002_20170515.txt
FILE_500032_20170426.txt
FILE_400044_20170101.txt

电流输出:

FILE_300002_400044.txt
FILE_300002_300002.txt
FILE_300002_500032.txt

文件示例:

这是我输入文件的内容:

300002,20170515,500032,20170426,400044,20170101

我的代码:

IFS=',' read -r -a array <<< "$input"   
ini=1
ID=0
Da=1
num="${#array[@]}"
let num=num/2
while [ $ini -le $num ];do
touch "/path/FILE_${array[Da]}_${array[ID]}.txt"
let ini=ini+1
let Da=Da+2
let ID=ID+2
done

我注意到只在文件名上使用'/path/FILE_${array[ID]}.txt',显示所有正确的 ID,但是当同时使用两者时,'/path/FILE_${array[Da]}_${array[ID]}.txt'就搞砸了

可以这样做

IFS=',' read -r -a array <<< "$input"
for((i=0;i<${#array[@]}-1;i+=2));do
    touch "/path/FILE_${array[i]}_${array[i+1]}.txt"
done

awk 替代方法:

awk -F, '{ for(i=1;i<=NF;i+=2) if($i!="") system("touch FILE_"$i"_"$(i+1)".txt") }' input

检查结果:

> ls -1 FILE_*
FILE_300002_20170515.txt
FILE_400044_20170101.txt
FILE_500032_20170426.txt

  • system(command) - 执行操作系统命令命令

最新更新