'echo' come parte da mensagem

2

Eu quero escrever um script que vai despejar todas as partições do meu dispositivo android através da ponte de depuração android e, como este é um processo demorado, eu quero notificar o usuário sobre o progresso, ecoando mensagens após certos eventos-chave acontecerem. Para minha surpresa, notei que às vezes echo não imprime todos os caracteres que deveria.

O menor exemplo que reproduz o erro é:

#!/bin/bash

targets=$(adb shell "ls /dev/block/nand*")

for item in $targets; do
    echo "Processing $item"
    echo "dd if=$item bs=4M"
done

Isso produz a seguinte saída:

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

Por que isso acontece e como posso corrigi-lo?

    
por Mihai Bişog 26.06.2013 / 22:18

1 resposta

6

Seu $item termina com um retorno de carro, então o cursor volta para o início da linha e imprime <space>bs=4M

Você pode fazer item=${item%$'\r'}

    
por 26.06.2013 / 22:41

Tags