Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用数组项作为文件名创建文件_Arrays_Linux_Bash_Shell_Filenames - Fatal编程技术网

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

Arrays 使用数组项作为文件名创建文件,arrays,linux,bash,shell,filenames,Arrays,Linux,Bash,Shell,Filenames,我正在尝试创建给定ID及其相应日期的文件。我想使用数组项设置这些文件的名称。问题是,结果并不是我在创建文件时所期望的。谢谢你的帮助 所需输出: FILE_300002_400044.txt FILE_300002_300002.txt FILE_300002_500032.txt 我想创建以下格式的文件: FILE_300002_20170515.txt FILE_500032_20170426.txt FILE_400044_20170101.txt 电流输出: FILE_300002_4

我正在尝试创建给定ID及其相应日期的文件。我想使用数组项设置这些文件的名称。问题是,结果并不是我在创建文件时所期望的。谢谢你的帮助

所需输出:

FILE_300002_400044.txt
FILE_300002_300002.txt
FILE_300002_500032.txt
我想创建以下格式的文件:

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
IFS=”,'read-r-a数组可以这样做

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
IFS=”,“read-r-a数组awk替代方法:

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

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

变量
Da
vs索引
Da
。感谢您的观察,我在将变量复制到正文时忘记了更改变量。无论如何,问题仍然存在。请在修复之后粘贴当前输出好吗?
“/path/FILE{array[Da]}{array[ID]}.txt”
可能是
/path/FILE{array[ID]}{array[Da]}.txt
ID
可以放在第一位。数组索引已经在算术上下文中进行了计算
${array[i]}
${array[i+1]}
就足够了。同样的
for
循环:
for((i=0;i@chepner是的,我不知道为什么我会在循环中这样做,但对于数组索引,我不是100%,但我很确定它们在旧版本的Bash中不会那样工作。在3.2中它肯定是这样工作的,更改日志暗示至少从2.0开始就这样了。谢谢你的帮助“@123”还有@chepner。这个解决方案满足了我的期望。你们太棒了!这个解决方案也满足了我的期望,它很有效!@Roman”和@123你们真的帮了我很多。你们真是天才!