[英]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.