检查输入是否在 Conda 环境中

Bry*_*ind 3 unix bash shell

我有一个 bash 文件,需要包含验证检查。基本上,该文件的目的是接受输入并激活虚拟环境。这是用这一行完成的:

source activate $1
Run Code Online (Sandbox Code Playgroud)

但是,我需要检查输入是否是有效的 conda 环境。当我执行以下命令时:

conda env list
Run Code Online (Sandbox Code Playgroud)

它将返回:

# conda environments:
#
py2713                   /opt/anaconda2/envs/py2713
py341                    /opt/anaconda2/envs/py341
py345                    /opt/anaconda2/envs/py345
root                  *  /opt/anaconda2
Run Code Online (Sandbox Code Playgroud)

即脚本必须检查输入是否为py2713py341或。如果它不在环境列表中,则应返回一条消息并退出。py345root

Bry*_*ind 7

可以执行以下操作来检查是否将正确的环境传递到文件中您可以使用以下命令运行 shell 文件

sh file.sh py2713
Run Code Online (Sandbox Code Playgroud)

file.sh 将包含:

ENVS=$(conda env list | awk '{print $1}' )
if [[ $ENVS = *"$1"* ]]; then
   source activate $1
else 
   echo "Error: Please provide a valid virtual environment. For a list of valid virtual environment, please see 'conda env list' "
   exit
fi;
Run Code Online (Sandbox Code Playgroud)