Executei o seguinte código em meu console Bash em um ambiente Ubuntu 16.04:
cat <<-'DWA' > /opt/dwa.sh
DWA() {
test='test'
read domain
find /var/www/html/ -exec cp /var/www/html/${domain} /var/www/html/${test} {} \;
sed -i 's/${domain}/${test}'/g /var/www/html/test/wp-config.php
sed -i 's/${domain}/${test}'/g /var/www/html/test/wp-config.php
mysql -u root -p << MYSQL
create user '${test}'@'localhost' identified by '${psw}';
create database ${test};
GRANT ALL PRIVILEGES ON ${test}.* TO ${test}@localhost;
MYSQL
}
DWA
DWA
Tudo foi redirecionado como eu desejava, exceto o código na última linha (a última DWA
que serve como chamada de função).
Por que tudo além da última DWA
chamada de função foi copiado, mas apenas este fluxo não foi?
Talvez algum conflito com o DWA
antes do último?
O último
DWA
está sendo removido porque você o está usando como delimitador. Os delimitadores informam ao seu shell que tudo entre essas strings correspondentes faz parte do meu documento aqui. Os delimitadores não fazem parte do documento e, portanto, são removidos quando o documento here é lido. A razão pela qual oDWA
anterior permaneceu é porque o delimitador deve estar no início da linha. Eu normalmente vejo as pessoas usaremEOF
ouEOL
, mas essa string pode ser o que você quiser, desde que seja única e não apareça em seu documento.Eu recomendo modificar para isso:
Se você realmente deseja que essas variáveis se expandam antes de serem enviadas,
dwa.sh
você deve remover as aspasEOF
Acho esta página um recurso muito conciso para os documentos aqui: http://tldp.org/LDP/abs/html/here-docs.html