while true do echo "writing......" time dd if=/dev/zero of=/dev/mmcblk0p1 bs=1024K count=100 echo "reading......" time dd if=/dev/mmcblk0p1 of=/dev/zero bs=1024K count=100 done 改为只运行3次的
时间: 2023-08-28 09:20:35 浏览: 52
你可以使用一个计数器来控制 while 循环的次数,从而让程序只运行 3 次。以下是修改后的程序:
```
#!/bin/bash
count=0
while [ $count -lt 3 ]
do
echo "writing......"
time dd if=/dev/zero of=/dev/mmcblk0p1 bs=1024K count=100
echo "reading......"
time dd if=/dev/mmcblk0p1 of=/dev/zero bs=1024K count=100
count=$((count+1))
done
```
在上述程序中,我们使用了一个名为 count 的变量来计数 while 循环的次数。当 count 小于 3 时,程序会一直执行循环体中的命令,当 count 达到 3 时,程序会退出 while 循环。
相关问题
dd if=/dev/mmcblk0p1 of=/test oflag=direct bs=1Mib count=1000 dd: invalid argument 'direct' to 'oflag'
这个错误信息表明,`dd`命令中的`oflag`选项不支持`direct`参数。如果你想要使用直接IO模式,应该使用`iflag`选项来指定。
下面是正确的命令示例:
```
dd if=/dev/mmcblk0p1 of=/test iflag=direct bs=1M count=1000
```
这个命令将从`/dev/mmcblk0p1`设备中读取1000个块(每块大小为1MB),并将它们写入`/test`文件中。`iflag=direct`选项将启用直接IO模式,避免将数据从内核缓冲区复制到用户空间缓冲区,以提高性能。
~ # dd if=/dev/mmcblk0p1 of=/test iflag=direct bs=1M count=1000 dd: invalid argument 'direct' to 'iflag'
非常抱歉,我之前的回答有误。`iflag`和`oflag`选项都不支持`direct`参数。如果你想要使用直接IO模式,应该使用`oflag=direct`选项来指定。
下面是正确的命令示例:
```
dd if=/dev/mmcblk0p1 of=/test oflag=direct bs=1M count=1000
```
这个命令将从`/dev/mmcblk0p1`设备中读取1000个块(每块大小为1MB),并将它们写入`/test`文件中。`oflag=direct`选项将启用直接IO模式,避免将数据从内核缓冲区复制到用户空间缓冲区,以提高性能。