Answers:
由于您没有任何其他要求,因此应该可以执行以下操作:
#! /bin/bash
for n in {1..1000}; do
dd if=/dev/urandom of=file$( printf %03d "$n" ).bin bs=1 count=$(( RANDOM + 1024 ))
done
(bash
至少需要{1..1000}
)。
bash
出于多种原因需要这样做,包括$((…))
和$RANDOM
。甚至$(…)
可能并不存在于每个 shell中。
bash
他们也没有起源于bash
({1..1000}
来自zsh
,for n in...; done
和变量扩展来自Bourne shell的$(...)
,$((...))
和$RANDOM
来KSH)。不属于POSIX的特点是{1..1000}
,$RANDOM
和/dev/urandom
。
"%04d"
在这种情况下bash
或zsh
不{0001..1000}
使用它printf
有一个变化seq
,xargs
,dd
和shuf
:
seq -w 1 10 | xargs -n1 -I% sh -c 'dd if=/dev/urandom of=file.% bs=$(shuf -i1-10 -n1) count=1024'
根据评论的要求进行解释:
seq -w 1 10
打印从01到10的数字序列
xargs -n1 -I%
执行该命令sh -c 'dd ... % ...'
用于更换每个序列号%与它
dd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024
用1024个块创建从/ dev / urandom馈入的文件,块大小为
shuf -i1-10 -n1
从1到10的随机值