创建调用 python 脚本的 bash 脚本,该脚本接受位置参数、命名参数和标志

问题描述 投票:0回答:1

我想创建一个调用 python 脚本的 bash 脚本。 python 脚本接受位置参数、命名参数和布尔标志。这个想法是 bash 脚本将用户提供的任何内容传递给 python 脚本。

以这个Python脚本

example.py
为例:

import argparse

def run(positional_argument,named_argument='default',flag=False):
    print(positional_argument)
    print(named_argument)
    print(flag)
    
if __name__ == '__main__':
    
    parser = argparse.ArgumentParser()

    # add positional arguments
    parser.add_argument('positional_argument',type=str,choices=['a','b'])

    # add keyword arguments
    parser.add_argument('--named_argument',type=str,required=False,default='default')

    # add flags
    parser.add_argument('--flag',action='store_true')

    # parse arguments
    args = parser.parse_args()
    
    # call function
    run(positional_argument=args.positional_argument,
        named_argument=args.named_argument,
        flag=args.flag)

现在编写一个脚本

wrapper.sh
在内部调用
example.py

P.S.:为好奇的读者提供更广泛的背景(尽管并不是解决我的问题所必需的):我想创建一个也可以用作命令行应用程序的 pip 包。 已经有一个答案,但它只涵盖位置参数。

python bash command-line-interface parameter-passing command-line-arguments
1个回答
0
投票

回答我自己的问题。 here提供的解决方案也涵盖了我的示例。所以

wrapper.sh
看起来像这样:

#!/usr/bin/env bash

if [[ ! $@ ]]; then
    python3 -m example -h
else
    python3 -m example $@
fi
© www.soinside.com 2019 - 2024. All rights reserved.