【问题标题】:Linux:How to pass command line argument to an command line argument that is being passed to a script?Linux:如何将命令行参数传递给正在传递给脚本的命令行参数?
【发布时间】:2013-10-11 07:18:15
【问题描述】:

我有两个脚本,分别是 script1.pyscript2.sh

script1.py 将 "-t something" 作为命令行参数,而 script2.sh 将 script1.py 作为其命令行参数说:script2.sh -class script1.py。 p>

我可以通过以下方式将 script1.py 作为独立脚本执行:"script1.py -t value"

现在我要做的是在将 script1.py 作为命令行参数传递给 script2.sh 的同时将命令行传递给 script1.py。

我想试试这样的-

script2.sh --class script1:MyClass"-t value" --verbose

script2.sh 全部设置为从 --class 参数获取 Myclass。 现在上面的命令是我想要做的。 // 其中 MyClass 是 script1.py 中的一个类

【问题讨论】:

    标签: python linux bash shell command-line-arguments


    【解决方案1】:

    此处不能使用括号。最简单和最常见的方法是将整个 python 子命令行作为字符串传递:

    script2.sh -class "script1.py -t value" --verbose
    

    【讨论】:

    • script2.sh --class script1:MyClass"-t value" --verbose script2.sh 全部设置为从 --class 参数获取 Myclass。现在上面的命令是我想要做的。 // 其中 MyClass 是 script1.py 中的一个类
    【解决方案2】:

    script2.shscript1.py 是您的代码还是其他人的代码?

    如果它们是您的(或至少是script2.sh),您可以自己实现此类功能(使用argparse 或等效项);如果不是,那么没有内置的方法可以做到这一点,例如:您所要求的与传递参数的通用 Bash/shell 功能无关。

    附:或者@hek2mgl 所说的也可能有效。

    【讨论】:

    • 这些文件在 SVN 中。为了编辑这两个文件,我必须发布这两个文件的代码审查,这需要时间来获得批准,然后进入下一阶段。 script2.sh --class script1:MyClass"-t value" --verbose script2.sh 全部设置为从 --class 参数获取 Myclass。现在上面的命令是我想要做的。 // 其中 MyClass 是 script1.py 中的一个类
    • hek2mgl 对我不起作用。这也是一个标准的解决方案。
    猜你喜欢
    • 2014-03-08
    • 2013-10-22
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多