주요 목표는 분할 파일을 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)
, ${...//}
)를 사용하고 있지만 이를 실행하면 sh
Android에서 기본적으로 Bash가 아닙니다.