簡體   English   中英

重擊跳過python命令

[英]Bash skipping python commands

我有一個像這樣的簡單腳本。

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

我使用bash myscript foo類的命令運行腳本,但是在上面的當前代碼中,僅該命令將運行scl enable python33 bash ,由於某種原因,下一個if塊將不會執行,但是如果我刪除scl enable python33 bash然后if塊中的代碼可以正確執行。

起初我以為scl enable python33 bash導致腳本退出,但事實並非如此,因為我可以在運行腳本前后看到python -V ,並且按預期工作且沒有錯誤。

由於某些原因, scl enable python33 bash命令和if塊似乎不屬於腳本。

它不能按您編寫的那樣工作的原因是因為您正在分叉一個新的bash進程,該進程已激活該集合; 因此,您的論據沒有得到您期望的解析。


scl工具是RedHat 軟件集合框架的一部分

由於用於安裝軟件(rpm)的常規工具會在系統級別覆蓋軟件包,因此RedHat提供了作為“虛擬環境”形式的軟件集合,以便直接通過RPM安裝多個版本的軟件包。 這些軟件包稱為軟件集合,都安裝在/opt/rh/

用於激活軟件包的scl工具的語法為:

scl enable nameofpackage command

您可以將多個軟件包添加到列表中。

在腳本中,您需要做的就是直接用scl行替換Python調用,如下所示:

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

您可以在其文檔參考中閱讀有關scl命令的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM