Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ADB-使用ADB shell从设备获取字符串有意外和奇怪的行为_Android_String_Shell_Adb - Fatal编程技术网

Android ADB-使用ADB shell从设备获取字符串有意外和奇怪的行为

Android ADB-使用ADB shell从设备获取字符串有意外和奇怪的行为,android,string,shell,adb,Android,String,Shell,Adb,当我试图在shell脚本中concat2字符串时,我遇到了最奇怪的问题 首先,让我告诉你我想做什么。 我想使用adb在Android设备的外部存储器中创建一个文件夹。为此,我首先需要获取设备的外部存储文件夹 为此,我使用了以下方法: folder=$(adb shell 'echo $EXTERNAL_STORAGE') 它可以工作,因为如果我尝试运行echo$folder,结果是/sdcard,这是正确的外部存储文件夹 但我想在其中创建一个新文件夹,名为testResults。因此,为了获得

当我试图在shell脚本中concat2字符串时,我遇到了最奇怪的问题

首先,让我告诉你我想做什么。 我想使用
adb
在Android设备的外部存储器中创建一个文件夹。为此,我首先需要获取设备的外部存储文件夹

为此,我使用了以下方法:

folder=$(adb shell 'echo $EXTERNAL_STORAGE')
它可以工作,因为如果我尝试运行
echo$folder
,结果是
/sdcard
,这是正确的外部存储文件夹

但我想在其中创建一个新文件夹,名为testResults。因此,为了获得完整路径,我尝试了以下方法:

newDir=$folder/testResults
folder=$(adb shell 'echo sdcard')
newDir=$folder/pop
echo $newDir
问题是
newDir
变量始终具有值
/testResults
,忽略了
文件夹的值

起初,我认为这可能是一个子shell问题,即当我试图用新字符串“出于某种原因”连接它时,
文件夹
的值不可用。但后来,它变得更奇怪了

如果我尝试使用比
文件夹
更小的字符串来压缩
文件夹
('pop',例如),如下所示:

newDir=$folder/pop
adb shell 'echo $EXTERNAL_STORAGE' > result.txt
folder=$(cat result.txt)
newDir=$folder/pop
echo $newDir
这是我运行echo$newDir时的结果:

/popard
结论:由于某种原因,
文件夹
的值被“忽略”,当它试图与其他字符串
s合并时,它将实际替换
文件夹
的第一个
N
字符(使用
N=长度

我想可能是
/s
文件夹开始时的
/s
是造成如此多混乱的原因,所以我尝试了以下方法:

newDir=$folder/testResults
folder=$(adb shell 'echo sdcard')
newDir=$folder/pop
echo $newDir
结果是:

/poprd
结论:adb shell工具中的某些东西使字符串行为异常

事实上,问题似乎与亚洲开发银行有关,因为如果我尝试以下方法:

folder=$(echo "/sdcard")  #or even folder="/sdcard"
newDir=$folder/testResults
echo $newDir
结果正确:
/sdcard/testResults

但这变得更奇怪了。。。 我尝试使用文件来帮助我,如下所示:

newDir=$folder/pop
adb shell 'echo $EXTERNAL_STORAGE' > result.txt
folder=$(cat result.txt)
newDir=$folder/pop
echo $newDir
这里的结果又是
/popard
! 如果我打开文件,并在包含字符串
/sdcard
的行中插入某个内容,使其成为(例如)
/sdcardish
,然后执行以下操作:

folder=$(cat result.txt)
newDir=$folder/pop
echo $newDir
结果是:/popardish 如果我删除文件中的那一行,然后添加另一行,它就可以正常工作

我真的不知道发生了什么。。。 有人知道可能会发生什么吗


提前谢谢

我猜
文件夹
值的末尾有一个换行符。试试这个:

folder=$(adb shell 'echo -n $EXTERNAL_STORAGE')
Uau,谢谢!:)成功了!我完全迷惑不解。。。解决方案非常简单。我只知道这一定是件很愚蠢的事:P