如果我动态设置变量,bash 中的命令不起作用

Command in bash doesn't work if I dynamically set variable

我使用一些命令的输出来获取 .apk 文件的路径,然后从 Android phone 中提取该文件,如下所示:

#!/bin/bash
#This command sets APK_PATH variable to /data/app/com.test.something-1/base.apk
APK_PATH="$(adb shell pm path com.test.something | cut -d':' -f 2)"
# adb pull command is being used to pull .apk file from phone when I have the path
adb pull $APK_PATH

这种获取 .apk 路径并从 phone 中提取文件的动态方法不起作用。结果显示以下错误消息:

' does not existdata/app/com.test.something-1/base.apk

然而,当我对路径进行硬编码时,它完美地工作:

#!/bin/bash
APK_PATH=/data/app/com.test.something-1/base.apk
adb pull $APK_PATH

任何人都可以帮助我编写这一小段 bash 脚本吗?我相信当 'adb pull' 开始执行但无法修复时 APK_PATH 尚未设置。

我猜你在返回值中得到了一个不需要的特殊字符,b/c 奇怪的缺失 space 和前导 /(除非你输入的信息有误)。

试试这个

APK_PATH="$(adb shell pm path com.test.something |tr -cd '[:graph:] \t' |cut -d':' -f2)"