我最近一直在和adb打交道,主要是push命令。当手机不想像闪存驱动器那样挂载时,它是一个救生圈。最近,我一直在加载音频文件到手机上,发现了一个整洁的一行程序,可以使手机从锁定屏幕播放音频。我试过了,它在/storage/emulated/legacy/Downloads/
中的一个名为“Wolves.mp3”的文件上完美地工作,但是当我尝试一个名为Coyote (group).mp3
的文件时,它给出了错误:
/system/bin/sh: syntax error: '(' unexpected
字符串
我尝试了许多不同的解决方案,比如从file:///storage/...
改为/storage/...
,根据this site转义符号,这只会让我更加困惑。我甚至试着使用common \来转义符号/storage/emulated/legacy/Downloads/Coyote\ \(group\).mp3
,但即使这样也会产生完全相同的错误。
编辑
我运行的命令看起来像这样:
[jaz@Jaz-Jackson ~]$ adb shell am start -a android.intent.action.VIEW -d file:///storage/emulated/legacy/Downloads/coyote (group).mp3 -t audio/mp3
型
3条答案
按热度按时间sgtfey8w1#
嘿,我想通了!!!
知道file://协议是用于超链接结构的,我记得你通常的url会用字符串
%20
替换空格符号,所以我把这首歌推到我的另一个手机上,用%20替换空格,然后它就走了!现在我只需要替换所有特殊符号,如()[]{}-+!@#$%^&* 及其超链接等价物,这应该解决了我所有的问题!字符串
是的。我能在我的音乐中找到的唯一一首没有任何特殊符号的歌曲是Ra Ra RasPutin。但它工作!
czfnxgou2#
工作溶液:
1.直接使用adb命令时解决方案是:
第一个月
说明:这里使用的adb来自android shell,shell对()圆括号有特殊的含义,因此会发生上述错误。因此,转义括号将解决它。
1.在adb命令中使用xargs时:
echo "file:///storage/emulated/legacy/Downloads/coyote (group).mp3" | xargs -n1 -I {} adb shell am start -a android.intent.action.VIEW -d "{}" -t audio/mp3
个但在这里
echo "file:///storage/emulated/legacy/Downloads/coyote \(group\).mp3" | xargs -n1 -I {} adb shell am start -a android.intent.action.VIEW -d "{}" -t audio/mp3 Error: /system/bin/sh: Unexpected '('
将不起作用。因为一次圆括号是用反斜杠转义的,这解决了android shell的问题,但是反斜杠作为xargs计算机shell的特殊字符,因此它也需要转义。因此,解决方案将是:
echo "file:///storage/emulated/legacy/Downloads/coyote \\(group\\).mp3" | xargs -n1 -I {} adb shell am start -a android.intent.action.VIEW -d "{}" -t audio/mp3
个f0brbegy3#
什么身体我不不我只看到我的帐户给我
**Maa ki chutt
布特矿脉
**