【问题标题】:Error in shell script to get Android's source info from logcat从 logcat 获取 Android 源信息的 shell 脚本出错
【发布时间】:2013-02-22 06:57:19
【问题描述】:

我正在尝试使用此 shell 脚本从 ndk 获取详细错误,如此处 [link] 所述。但是我遇到了一些错误,我不知道 shell 脚本,有人可以帮我解决这个问题吗?

代码

if [ $# -lt 1 ]
then
    echo usage: $0 app
    exit 0
fi

APP=$1
LOG_FILE=$2

if [ ! -n "${ANDROID_NDK}" ]
then
    ANDROID_NDK=`dirname $0`
    echo ANDROID_NDK is not set using ${ANDROID_NDK}
fi

ADDR2LINE=${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-eabi-addr2line


if [ ! -s $LOG_FILE ]
then
    echo File $LOG_FILE does not exist or empty.
    exit 0
fi

while read LINE
do
    echo $LINE

    if [[ $LINE =~ ^.+\#[0-9]{2}\ +pc\ +([0-9A-Fa-f]{8})\ +(.+\.so).?$ ]] 
    then
            ADDR=${BASH_REMATCH[1]}
            SO=`basename ${BASH_REMATCH[2]}`
            SRC=`${ADDR2LINE} -C -f -e ${ANDROID_NDK}/out/apps/${APP}/armeabi/$
{SO} ${ADDR} 2>/dev/null`
            echo ${SRC} 

输出

./stack.sh: line 42: conditional binary operator expected
./stack.sh: line 42: syntax error near `=~'
./stack.sh: line 42: `        if [[ $LINE =~ ^.+#[0-9]{2}\ +pc\ +([0-9A-Fa-f]{8})\ +(.+\.so).?$ ]] '

【问题讨论】:

    标签: android bash shell android-ndk


    【解决方案1】:

    =~ 运算符是在 Bash 版本 3 中添加的;您可能需要更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 2017-03-26
      • 1970-01-01
      相关资源
      最近更新 更多