não pode executar o comando dd no dispositivo android

1

O objetivo principal é enviar um arquivo dividido para um andróide e juntá-lo com um script .sh, o arquivo é dividido em partes de 5MB, mas seu tamanho total é desconhecido (tentando fazer um script universal), eu ve dividiu o arquivo e transferiu as partes do arquivo e o script para um diretório dentro do dispositivo android e executou o .sh com adb shell sh script.sh. tudo é ok mas o comando dd que não aceita uma variável

file="$(ls /data/local/tmp/ | grep -i --include="*.tul" tul)"
echo file is "$file" 
name="${file%.*}"
echo short name is "$name"
tmp="${file: -3}";
num=${tmp//[!0-9]/}
echo number of files is "$num"
N="${name}.part1"
dd if="/data/local/tmp/$"${name}.part1"" of=/data/local/tmp/cust bs=1024 count=5120
i=1
while [ $i -le $num ]; do
dd if="/data/local/tmp/$"${name}.part1""$i"" of="/data/local/tmp/cust" bs=1024 count=5120 seek="$((($i-1)*5120))"
let i=i+1
done
echo DONE
exit

a saída normalmente é que o final do nome corta o começo e eu recebo dd se não houver esse arquivo ou diretório significado

/data/local/new_file.part1
becomes something like .part1local/new_file

enquanto no comando lind adb shell ele funciona OK

adb shell
 >dd if="/data/local/tmp/$"${name}.part1"" of=/data/local/tmp/cust bs=1024 count=5120

$ file é um arquivo de índice que tem o nome da parte e o número total deles gerado pelo código de divisão (em java)

editar:

dd if=/data/local/tmp/"$name".part"$i" of=/data/local/tmp/cust bs=1024 count=5120 seek="$((($i-1)*5120))"

trabalhando na linha de comando (adb shell), mas ao executar o arquivo .sh, obtenho

.part2: No such file or directory
    
por Gurman Eduard 25.05.2015 / 01:31

1 resposta

0

Você está usando operadores e sintaxe semelhantes a Bash ( $(command) , ${...//} ), mas executando por sh , que no Android não é Bash por padrão.

    
por 25.05.2015 / 02:00