我在Linux上创建了一个简单的bash脚本来创建随机文件。我将文件名和文件大小传递给脚本,如下所示:
./createFiles 5 filename1 filename2
* 5 = filesize
我的代码如下所示:
#! /bin/bash
oriDir=files/ori
fileSize=$1
fileName=$2
# Create files
for fileName do
dd if=/dev/urandom of=$oriDir/$2.mp4 bs=1048576 count=$fileSize
# Shift through filenames
shift 1
done
输出符合预期。我的目录中有2个新文件:
filename1.mp4 (size 5)
filename2.mp4 (size 5)
我现在要做的是使用各种文件大小的foreach文件名。我的命令看起来不像这样:
./createFiles 5 2 filename1 filename2
该脚本不会生成2个文件:
filename1.mp4 (size 5)
filename2.mp4 (size 2)
可选地,脚本应该能够执行以下操作:如果文件名多于给定的文件大小,则应该为所有剩余的文件名采用最后的文件大小:
./createFiles 5 2 filename1 filename2 filename3
将生成:
filename1.mp4 (size 5)
filename2.mp4 (size 2)
filename3.mp4 (size 2)
我确实尝试过使用shift并添加另一个shit命令,但没有任何效果。
答案 0 :(得分:4)
如果你选择这样的东西
./ script file1 size1 file2 size2 ... fileN sizeN
你可以成对地遍历这个列表
limit=$[ $#/2 ];
for((i=0;i<$limit;i++)){
file=$1
size=$2
# do some stuff
shift 2
}