我在Linux上创建了一个简单的bash脚本来创建随机文件。我通过文件名和文件大小的脚本是这样的:Bash脚本+移动多个变量
./createFiles 5 filename1 filename2
* 5 =文件大小
我的代码如下所示:如预期
#! /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
该脚本将不是生成两个文件:
filename1.mp4 (size 5)
filename2.mp4 (size 2)
可选,脚本应该能够做到以下几点:万一有不止名给出的filesizes,它应该只取最后文件大小为所有剩余的文件名:
./createFiles 5 2 filename1 filename2 filename3
会产生:
filename1.mp4 (size 5)
filename2.mp4 (size 2)
filename3.mp4 (size 2)
我的确尝试过使用shift并添加另一个shit命令,但没有任何工作。
你所的方式选择构造参数 ... ...不适合简单的shell编程。尝试使用 ......改为。 –
Phil
感谢您的建议!马上试试@ Tiago的回答。 – Andrej
你原来的剧本很奇怪。将循环移出循环会更典型,并执行:fileSize = $ 1;转移; for fileName; do dd if =/dev/urandom of = $ oriDir/$ fileName.mp4 bs = 1048576 count = $ fileSize;完成 –