gpt4 book ai didi

linux - Bash 跳过 python 命令

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:31 24 4
gpt4 key购买 nike

我有一个像这样的简单脚本。

#!/bin/bash
scl enable python33 bash
args=$#
if [[ $args -eq 1 ]]; then
python script.py
fi

我用 bash myscript foo 这样的命令运行脚本,但是在上面的当前代码中,只有命令会运行 scl enable python33 bash 并且出于某种原因下一个if block 不会被执行,但是如果我删除 scl enable python33 bash 行,那么 if block 中的代码将毫无问题地执行。

起初我以为 scl enable python33 bash 导致脚本退出,但事实并非如此,因为我可以看到 python -V 前后运行脚本,它按预期工作,没有错误。

出于某种原因,scl enable python33 bash 命令和 if block 似乎不属于脚本。

最佳答案

它不能像您写的那样工作的原因是因为您正在 fork 一个新的 bash 进程,该进程激活了集合;因此您的论点没有按照您的预期进行解析。


scl 工具是 RedHat 的 software collections framework 的一部分.

由于用于安装软件的常规工具 (rpm) 在系统级别覆盖软件包,RedHat 提供软件集合作为一种“虚拟环境”形式,以便直接通过 RPM 安装多个版本的软件包。这些软件包称为软件集合,都安装在 /opt/rh/ 中。

用于激活包的 scl 工具的语法是:

scl enable nameofpackage command

您可以将多个包添加到列表中。

在您的脚本中,您需要做的就是直接将 Python 调用替换为 scl 行,如下所示:

#!/bin/bash
args=$#
if [[ $args -eq 1 ]]; then
scl enable python33 python script.py
fi

您可以在其 documentation reference 中阅读有关 scl 命令的更多信息.

关于linux - Bash 跳过 python 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36245769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com