Ниже приведен мой пример кода, который устанавливает параметры среды для сеанса. Я получаю имя параметра env в качестве первого аргумента функции и сохраняю его в supplied_env
, у меня есть список возможных сред, которые содержат возможные или разрешенные среды, разрешенные для этого сценария. Я должен держать этот список жестко закодированным, что приемлемо. Однако, в конце, перед получением файла среды, мне нужно запустить if condition
с жестко закодированным именем среды (env1 or env2
). Есть ли способ сохранить только жестко закодированные имена окружений только в начале и динамически сопоставить их позже?
#!/bin/bash
supplied_env="${1}"
possible_env="env1 env2"
if [ $# -ne 1 ];then
echo "You must provide any one of these values ${possible_env}"
exit 1;
elif ! echo "${possible_env}"|grep "$supplied_env" ;then
echo "Incorrect value provided, You must provide any one of these values ${possible_env}"
exit 2;
else
target_env=${supplied_env}
fi
if [ ${supplied_env} == "env1" ];then #<------How to avoid using `env1` string here, rather get it from possible_env ?
source ~/.env1
elif [ ${supplied_env} == "env2" ];then
source ~/.env2
else
echo "Error..."
fi
Короче говоря, в будущем появятся среды перемещения, такие как env3
, env4
et c. Я просто хочу обновить скрипт в одном месте, а не в нескольких.