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 쉘 명령에서는 잘 작동합니다.

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), ${...//})를 사용하고 있지만 이를 실행하면 shAndroid에서 기본적으로 Bash가 아닙니다.

관련 정보