【问题标题】:How can I forward command line arguments in a shell script? [duplicate]如何在 shell 脚本中转发命令行参数? [复制]
【发布时间】:2021-08-05 06:13:50
【问题描述】:

我的目标是在我的 Mac 终端上运行一个将命令行参数传递给 python 脚本的 shell 脚本。我知道如何在 Windows 上做到这一点:

批处理文件(pythonScript.bat):

@py.exe C:\path\to\my\pythonScript.py %*
@pause

%* 将在批处理文件名之后输入的任何命令行参数转发到 Python 脚本。所以当我从命令行运行 pythonScript.bat 时...

C:\> pythonScript

...我在批处理文件名之后输入的参数(例如 C:> pythonScript 一些参数)被传递给 python 脚本。

如何在我的 Mac 上做到这一点?

如何补充我的代码,以便将任何命令行参数转发到 python 脚本?

Shell 脚本(pythonScript.command):

#!/usr/bin/env bash
python3 /path/to/my/pythonScript.py

【问题讨论】:

    标签: python bash terminal


    【解决方案1】:

    在 Linux bash 中我会这样做:

    #!/usr/bin/env bash
    `python3 /path/to/my/pythonScript.py "$@"`
    

    $@ 被解释为传递给 bash 脚本的参数列表。

    我没有mac来测试它,但值得一试

    【讨论】:

    • 行得通!我认为不需要 echo 命令。所以只是 python3 /path/to/my/pythonScript.py $@ 工作(不带引号)。非常感谢!我在网上搜索了很长时间,但找不到好的信息!
    • "$@" 需要引用,否则如果参数包含空格或 shell 元字符,它将中断。
    • @tripleee 谢谢,好点,我已经更新了答案
    • 正如已经建议的那样,也可能摆脱useless echo。
    • bash 是bash;这不是特定于 Linux 的。你也不需要反引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多