在Bash

时间:2018-04-20 11:36:57

标签: bash shell

我正在尝试在Shell中实现类似基本模块的导入。

我的想法是可导入模块应该有一个EXPORTS关联数组,import函数将变量名称赋值给模块文件名(例如import MYMODULE module.sh

这是我的主文件(源自Bash会话)

#!/bin/bash

import () {
    eval "declare -A $1"
    {
        source "$2"
        for i in "${!EXPORTS[@]}"
        do
            echo "from import (line 9): ${1}[$i]=${EXPORTS[$i]}"
            eval "${1}[$i]=${EXPORTS[$i]}"
        done
    }
}

import VAR echo.sh

for i in ${!VAR[@]}
do
    echo "from module (line 19): VAR[$i]=${VAR[$i]}"
done

这里是echo.sh

declare -A EXPORTS
EXPORTS[foo]="bar"
EXPORTS[baz]="ree"

这是我当前的输出

$ source module.sh
from import (line 9): VAR[baz]=ree
from import (line 9): VAR[foo]=bar

# expected output also includes
# > from module (line 19): VAR[baz]=ree
# > from module (line 19): VAR[foo]=bar

基本上我想要创建一个本地VAR变量(它没有)。如果我不想用数组做它,它就可以工作。

我做错了什么(除了“这是一个坏主意” - 我是为了学习目的而做的。)

提前感谢您的帮助!

0 个答案:

没有答案