expansão variável em aspas simples

0

Eu tenho uma string entre aspas simples. Dentro do qual eu quero inserir uma variável e expandi-la. Eu sei na expansão de variável bash funciona apenas com aspas duplas. Mas ainda não consigo fazer funcionar.

e.g.:

TOOLS_DIR="/tools"
echo '#define SYS_VIMRC_FILE "${TOOLS_DIR}/etc/vimrc"' >> src/feature.h

O resultado que recebo é assim:

#define SYS_VIMRC_FILE "${TOOLS_DIR}/etc/vimrc"

E a saída esperada é:

#define SYS_VIMRC_FILE "/tools/etc/vimrc"

Como posso resolver este problema?

    
por Abhimanyu Saharan 14.05.2016 / 00:45

2 respostas

3

Suas aspas duplas tecnicamente ainda estão entre aspas simples, portanto nenhuma expansão pode acontecer. Você pode fechar as aspas simples antes de iniciar as aspas duplas e fazer o inverso no final dessa seção interna para obter o que deseja:

TOOLS_DIR="/tools"
echo '#define SYS_VIMRC_FILE "'"$TOOLS_DIR"'"/etc/vimrc' >> src/feature.h

Alternativamente:

TOOLS_DIR="/tools"
printf '#define SYS_VIMRC_FILE "%s"/etc/vimrc\n' "$TOOLS_DIR" >> src/feature.h
    
por jlliagre 14.05.2016 / 01:07
1

Sua variável não será expandida porque você tem a string delimitada com ' tente um heredoc

TOOLS_DIR="/tools"
cat <<- EOF >> src/feature.h
    #define SYS_VIMRC_FILE "${TOOLS_DIR}/etc/vimrc" 
EOF

ou você pode mudar para " e escapar do interior " 's

TOOLS_DIR="/tools"
echo "#define SYS_VIMRC_FILE \"${TOOLS_DIR}/etc/vimrc\"" >> src/feature.h
    
por the_velour_fog 14.05.2016 / 00:53