Shorthand para declarar booleano

1

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?

    
por Alexander Mills 09.12.2016 / 00:40

2 respostas

4

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;
    
por 09.12.2016 / 00:52
1
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}?

    
por 09.12.2016 / 17:59