我想编写一个脚本,该脚本将通过 android 调试桥转储我的 android 设备的所有分区,由于这是一个时间密集型过程,我想通过在某些关键事件发生后回显消息来通知用户进度。令我惊讶的是,我注意到有时echo
不会打印它应该打印的所有字符。
重现错误的最小样本是:
#!/bin/bash
targets=$(adb shell "ls /dev/block/nand*")
for item in $targets; do
echo "Processing $item"
echo "dd if=$item bs=4M"
done
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出:
Processing /dev/block/nanda
dd if=/dev/block/nanda bs=4M
Processing /dev/block/nandd
dd if=/dev/block/nandd bs=4M
Processing /dev/block/nandg
dd if=/dev/block/nandg bs=4M
Processing /dev/block/nandj
bs=4M/dev/block/nandj
Processing /dev/block/nandb
dd if=/dev/block/nandb bs=4M
Processing /dev/block/nande
dd if=/dev/block/nande bs=4M
Processing /dev/block/nandh
bs=4M/dev/block/nandh
Processing /dev/block/nandc
dd if=/dev/block/nandc bs=4M
Processing /dev/block/nandf
dd if=/dev/block/nandf bs=4M
Processing /dev/block/nandi
bs=4M/dev/block/nandi
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该如何解决?