Как выполнить одну команду liner запроса sqlite3 с вложенными строками из оболочки adb? - PullRequest
0 голосов
/ 15 марта 2019

Я хочу выполнить однострочную команду SQLite 3 с вложенной строкой из оболочки adb.

Следующая команда РАБОТАЕТ:

adb shell su -c "sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db """SELECT * FROM sms WHERE read=1""";"

Однако эта команда НЕ РАБОТАЕТ:

adb shell su -c "sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db """SELECT * FROM sms WHERE address="+0012345" """;"

Как вы заметили, у меня есть изменение 'read = 1' в 'address = "+ 0012345"' Проблема в том, что в SQLite 3 выбранный формат смс должен быть TEST / STRING, а не число.Таким образом, команда выбора заканчивается на (address = ") и не учитывает то, что после нее (+0012345" ')

Есть идеи, как решить эту проблему?

обновление для другого испытания, которое не удалось для меня, но, возможно, даст кому-то направление:

Я попытался добавить «.explain» в командной строке, чтобы посмотреть, какая команда sqlite3получает.

adb shell su -c "sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db .explain \"SELECT * FROM sms WHERE address=\`\"\`\"+0012345\`\"\`\"\";\""

вывод равен

/system/bin/sh: ": not found
/system/bin/sh: ": not found
sqlite3: Error: too many options: "SELECT * FROM sms WHERE address="+0012345""
Use -help for a list of options.
/system/bin/sh: ": not found

, поэтому кажется, что sqlite3 получает телефонный номер с кавычками "+0012345" по запросу!Однако, когда я удаляю «.explain» вот так

adb shell su -c "sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db \"SELECT * FROM sms WHERE address=\`\"\`\"+0012345\`\"\`\"\";\""

, я получаю такой вывод:

/system/bin/sh: ": not found
/system/bin/sh: ": not found
/system/bin/sh: ": not found

1 Ответ

0 голосов
/ 16 марта 2019

решил сам с помощью:

adb shell su -c "sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db \"SELECT * FROM sms WHERE address=\"\\\"+0012345\"\\\"\"\"\";"

иди на цифру:)

...