Shell脚本:检查正确的Conda环境是否处于活动状态或是否存在

jecbmhm3  于 7个月前  发布在  Shell
关注(0)|答案(1)|浏览(108)

我开始编写安装shell脚本。因此,我想检查我是否有正确的Conda环境,或者它是否存在。但我有一些问题,每次当正确的环境是活跃的有没有检测到它里面的'如果'请求。
这是我的一段代码用于此功能:

#!/bin/bash

desired_env="gnuradio"

# Check if the desired environment exists
if conda env list | grep -q "^$desired_env "; then
    # Check if the desired environment is active
    if conda info --envs | grep -q "^\*.*$desired_env"; then
        echo "The '$desired_env' environment is currently active."
    else
        echo "Error: The '$desired_env' environment should be active."
        echo "Please activate the '$desired_env' environment using:"
        echo "conda activate $desired_env"
        read -p "Do you want to activate environment $desired_env? ([Y]/n): " choice
        if [[ "$choice" == "y" || -z "$choice" ]]; then
            conda activate $desired_env
        else
            exit 1
        fi
    fi
else
    read -p "The '$desired_env' environment does not exist. Do you want to create it? ([Y]/n): " choice
    if [[ "$choice" == "y" || -z "$choice" ]]; then
        conda create -n $desired_env
        echo "The '$desired_env' environment has been created. Please activate it using:"
        echo "conda activate $desired_env"
    else
        exit 1
    fi
fi

还有一些来自我的终端的进一步信息,在那里你可以看到我已经激活了正确的环境:

(gnuradio) X@X:~/Documents/Temp$ conda info --envs
# conda environments:
#
base                     /home/X/miniconda3
gnuradio              *  /home/X/miniconda3/envs/gnuradio
tf                       /home/X/miniconda3/envs/tf

(gnuradio) X@X:~/Dokumente/Temp$ bash test.sh 
The 'gnuradio' environment does not exist. Do you want to create it? ([Y]/n):

也许有人有办法解决这个问题。谢谢你!

hi3rlvi2

hi3rlvi21#

我自己解决了,对其他人来说,这是我的解决方案,效果很好。

#!/bin/bash

desired_env="gnuradio"

# Check if the desired environment exists in the list of environments
if conda env list | grep -q "\b$desired_env\b"; then
    # Check if the desired environment is active using conda info --envs
    if conda info --envs | grep -q "^\s*$desired_env\b"; then
        echo "Error: The '$desired_env' environment should be active."
        echo "Please activate the '$desired_env' environment using:"
        echo "conda activate $desired_env"
        read -p "Do you want to activate environment $desired_env? ([Y]/n): " choice
        if [[ "$choice" == "y" || -z "$choice" ]]; then
            # Either you change it manually or use 'source' instead of 'bash' *.sh
            source /home/X/miniconda3/etc/profile.d/conda.sh
            conda activate $desired_env
        else
            exit 1
        fi
    else
         echo "The '$desired_env' environment is currently active."
    fi
else
    read -p "The '$desired_env' environment does not exist. Do you want to create it? ([Y]/n): " choice
    if [[ ${choice:-y} == y ]]; then
        conda create -n $desired_env
        echo "The '$desired_env' environment has been created. Please activate it using:"
        echo "conda activate $desired_env"
    else
        exit 1
    fi
fi

相关问题