无法在 Android 设备上运行 dd 命令

无法在 Android 设备上运行 dd 命令

主要目标是将分割的文件发送到 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 shell 中它工作正常

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 shell)中工作,但是当运行 .sh 文件时,我得到

.part2: No such file or directory

答案1

您正在使用类似 Bash 的语法和运算符 ( $(command), ${...//}),但通过 运行它sh,这在 Android 上默认不是 Bash。

相关内容