동적으로 링크 된 원시 코드 개발을 위해 안드로이드 장치에서 모든 공유 오브젝트 파일을 가져 오기위한 작은 스크립트를 작성했습니다. 스크립트가 잘 작동하고 아마 거기서 멈출 수 있지만 임시 파일을 사용하는 것을 좋아하지 않습니다. 나는 이것을 다시 쓰려고 노력하면서 시간을 보냈지 만 나는 그것을 필요로하지는 않지만 모든 종류의 시도에 실패했다. 여기에 스크립트입니다 :임시 파일을 사용하지 않고 스크립트를 다시 작성하도록
declare -rx OUT_FILE=tmp.sh
adb shell 'cd /system/lib && for f in *.so; do echo -e "adb pull /system/lib/$f ./lib"; done' > $OUT_FILE
dos2unix $OUT_FILE
chmod +x $OUT_FILE
./$OUT_FILE
rm $OUT_FILE
내가 ADB 명령 서브 쉘을 사용하고 캐리지 리턴을 제거하기 위해 나오지에 공급 될 수있는 변수에 결과를 할당했습니다. 나는 그것이 작동하도록하지 않을 것입니다. 여기에 내가 명령 치환을 사용하여 시도하는 방법 예는 다음과 같습니다
res=$(adb shell 'cd /system/lib && for f in *.so; do echo -e "adb pull /system/lib/$f ./lib"; done')
echo $res > tmp.txt
지금 내 제한된 지식에서 나는 두 번째 솔루션에서 tmp.txt 파일 내 작업 솔루션에서 tmp 파일과 같은 conent를 포함하는 것이라고 생각합니다. 그렇지 않다.
최고 감사합니다,
앙드레 파이프가 지원된다고 가정
스크립트는 $ OUT_FILE을 제거해야하나요? 그런 다음 스크립트의 마지막 줄을 변경하지 않고 'tmp.sh'에서 'tmp. $$'또는 다른 이름으로 이름을 변경할 수 있습니다. 인터럽트시 임시 파일이 제거되도록 '함정'을 조사 할 수도 있습니다. 이 모든 것이 임시 파일을 없애기위한 좋은 이유입니다. –
복사/붙여 넣기 오류가 발생했습니다. 그 이유는 다음과 같습니다. –
두 번째 해결 방법의 결과가 다른 이유는 변수를 인용하지 않았기 때문입니다. 'echo "$ res"> tmp.txt'를 시도한 다음 비교해보십시오. –