Substituindo o valor por espaços para uma variável no script bash - a maneira correta

0

Eu tenho um script de compilação que pode compilar o programa com e sem os símbolos de depuração.

Eu quero perguntar via bash prompt ( read ) o usuário escolher se ele quer uma versão de depuração ou não com algo parecido com isto:

compiler_options_for_debug_version=''
debug_flag=''
if [[ "$debug_switch" == "Y" ]]; then
    compiler_options_for_debug_version=("CFLAGS=\"-g -O0\"")
    debug_flag='--with-debug'
fi

mas o CFLAGS="-g -O0" está me dando dor de cabeça, pois dá um erro:

vagrant@node02:~$ compiler_options_for_debug_version=("CFLAGS=\"-g -O0\""); $compiler_options_for_debug_version;
CFLAGS="-g: command not found

Eu tentei:

compiler_options_for_debug_version=("CFLAGS=\"-g -O0\"")
compiler_options_for_debug_version="CFLAGS=\"-g -O0\""
compiler_options_for_debug_version='CFLAGS="-g -O0"'

Espero que esta CFLAGS="-g -O0" coisa exacta aqui:

$compiler_options_for_debug_version ./configure --with-luajit --with-http_postgres_module ...

por isso deve ser expandido para:

CFLAGS="-g -O0" ./configure --with-luajit --with-http_postgres_module ...

Como último recurso, eu poderia adicionar uma declaração if [ ... ] e codificar o CFLAGS="-g -O0" , mas seria possível fazê-lo da maneira correta.

    
por Mindaugas Bernatavičius 27.06.2015 / 19:31

1 resposta

1

Basta colocar o valor em uma variável

compiler_options_for_debug_version=""
if something; then
    compiler_options_for_debug_version="-g -O0"
fi

Em seguida, certifique-se de citar a variável ao usá-la: isso é importante.

CFLAGS="$compiler_options_for_debug_version" ./configure ...
    
por 27.06.2015 / 20:07