1

我正在跟踪 Android 构建系统,发现了一些有趣的东西。

“local T dir f”是什么意思?

function addcompletions()
{                                                                                                                                             
    local T dir f

    # Keep us from trying to run in something that isn't bash.
    if [ -z "${BASH_VERSION}" ]; then 
        return
    fi   

    # Keep us from trying to run in bash that's too old.
    if [ ${BASH_VERSINFO[0]} -lt 3 ]; then 
        return
    fi   

    dir="sdk/bash_completion"
    if [ -d ${dir} ]; then 
        for f in `/bin/ls ${dir}/[a-z]*.bash 2> /dev/null`; do
            echo "including $f"
            . $f
        done 
    fi   
}
4

2 回答 2

1

本地 T 目录 f

在 bash 手册中:

* 'local' local [OPTION] NAME[=VALUE] ... 对于每个参数,创建一个名为 NAME 的局部变量,并分配 VALUE。OPTION 可以是 'declare' 接受的任何选项。'local' 只能在函数内使用;它使变量 NAME 具有仅限于该函数及其子函数的可见范围。返回状态为零,除非在函数外部使用“local”、提供了无效的 NAME 或 NAME 是只读变量。

* 'declare' 声明 [-aAfFilrtux] [-p] [NAME[=VALUE] ...]

如您所见,没有选项“T”声明。同时,在android的build/envsetup.sh中,“T”是这样使用的:T=$(gettop),意思是android源码目录的top dir。

所以,我认为这只是一个错误。应该是“local dir f”

于 2013-07-18T09:15:45.270 回答
0

上帝,我认为这只是 3 个变量...

于 2013-04-22T08:37:43.420 回答