主な目的は、分割ファイルをAndroidに送信し、.shスクリプトを使用してリンクすることです。ファイルは5MBの部分に分割されていますが、フルサイズは不明です(汎用スクリプトを作成しようとしています)。ファイルを分割してリンクしました。ファイルセクションとスクリプトをAndroidデバイス内のディレクトリにコピーし、adb shell sh script.shを使用して.shを実行します。すべてが正常ですが、ddコマンドは変数を受け入れません。
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
出力は通常、名前の終わりが先頭に接することです。そのファイルやディレクトリがない場合は、ddを取得することを意味します。
/data/local/new_file.part1
becomes something like .part1local/new_file
lind adb シェルコマンドではうまく動作します。
adb shell
>dd if="/data/local/tmp/$"${name}.part1"" of=/data/local/tmp/cust bs=1024 count=5120
$ fileは、分割コード(Java)によって生成された部品名と合計を含むインデックスファイルです。
編集する:
dd if=/data/local/tmp/"$name".part"$i" of=/data/local/tmp/cust bs=1024 count=5120 seek="$((($i-1)*5120))"
コマンドライン(adbシェル)で動作しますが、.shファイルを実行すると、次のメッセージが表示されます。
.part2: No such file or directory
答え1
Bashに似た構文と演算子($(command)
、${...//}
)を使用していますが、これを実行すると、Androidはsh
デフォルトでBashではありません。