shell_ast.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:ml-utils 作者: LinxiFan 项目源码 文件源码
def _shell_replace_vars(cmd, local_vars):
    spans = []
    replacements = []
    for match in _dollar_var_re.finditer(cmd):
        varname = match.group(1)
        if varname.isdigit():
            # $1, $2 for sys.argv, just like bash
            value = sys.argv[int(varname)]
        elif varname == '#':
            value = len(sys.argv) - 1
        elif varname == '@':
            value = ' '.join(map(shlex.quote, sys.argv[1:]))
        else:
            assert is_variable_name(varname), 'not a valid var name: ' + varname
            if not varname in local_vars:
                continue
            value = local_vars[varname]

        if isinstance(value, str):
            value = shlex.quote(value)
        else:
            value = str(value)
        spans.append(match.span())
        replacements.append(value)
    return _replace_n(cmd, spans, replacements)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号