在從 bash 腳本創建 conda 環境并在其中運行一些 python 代碼時,我在將變數傳遞給命令時遇到了一些困難。
示例 1
這是確實有效的硬編碼命令。
eval "$(conda shell.bash hook)"
cd some-repository && conda deactivate && conda activate some-environment && python -m code.project1.src --some-arg
MWE
這是一個不處理命令中的變數的示例:
# bash -c "some_test"
some_test() {
echo "PWD=$PWD"
eval "$(conda shell.bash hook && export env_var=some-dir)"
cd $env_var
echo "PWD=$PWD"
}
哪個輸出:
PWD=/home/name/git/some-repo
PWD=/home/name
題
如何將變數傳遞給之后正在執行的命令eval "$(conda shell.bash hook)"?
uj5u.com熱心網友回復:
eval "$(command)"執行命令列的輸出。所以需要輸出變數賦值,而不是在命令中執行。
您正在 的子shell 中執行變數賦值$(),因此它的變數賦值都不會保留到呼叫 shell 中。
eval "$(conda shell.bash hook && echo export env_var=some-dir)"
但我不確定為什么你需要在$(). 你可以寫
eval "$(conda shell.bash hook)"
export env_var=some-dir
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/433082.html
