Uma representação mais compacta pode ser obtida com algo como o seguinte
#!/bin/sh
BASE_DIRECTORY="home";
[ "home" == "$BASE_DIRECTORY" ] && HOME_IS_BASE_DIR=true || HOME_IS_BASE_DIR=false;
echo $HOME_IS_BASE_DIR;
Procurando uma maneira de declarar um booleano, algo assim:
HOME_IS_BASE_DIR=$("home" == "${BASE_DIRECTORY}") // boolean
USERS_IS_BASE_DIR=$("Users" == "${BASE_DIRECTORY}") // boolean
exceto, claro, o acima não funciona, eu recebo um erro:
bash cannot find home command
bash cannot find Users command
o longo caminho para fazer isso seria:
HOME_IS_BASE_DIR=false;
USERS_IS_BASE_DIR=false;
if [ "home" == "${BASE_DIRECTORY}" ]; then
HOME_IS_BASE_DIR=true;
else if [ "Users" == "${BASE_DIRECTORY}" ]; then
USERS_IS_BASE_DIR=true;
fi
existe uma abreviação para isso?
Uma representação mais compacta pode ser obtida com algo como o seguinte
#!/bin/sh
BASE_DIRECTORY="home";
[ "home" == "$BASE_DIRECTORY" ] && HOME_IS_BASE_DIR=true || HOME_IS_BASE_DIR=false;
echo $HOME_IS_BASE_DIR;
case ${BASE_DIRECTORY} in
"home")
HOME_IS_BASE_DIR=true
USERS_IS_BASE_DIR=false
;;
"Users")
HOME_IS_BASE_DIR=false
USERS_IS_BASE_DIR=true
;;
*)
# Handle heretofore unhandled values here
;;
esac
Não é exatamente uma forma abreviada, mas é muito claro o que você está fazendo e é fácil estender a outros locais. Em vez de usar essas variáveis extras, por que não apenas olhar diretamente para $ {BASE_DIRECTORY}?
Tags bash shell shell-script