En un artículo anterior escribí sobre las posibilidades que nos ofrecía Here Document para embeber código en shell scripts. No obstante si nos fijamos bien hay una pequeña cuestión más que nada estética y es que las líneas que delimitan el HereDoc no pueden estar indentadas en un principio. Como ejemplo el siguiente fragmento:
create_datasource(){ $JBOSS_HOME/bin/jboss-cli.sh --connect <<EOF batch :take-snapshot() /subsystem=datasources/jdbc-driver=\ "$driver-name":add(driver-name="$driver_name",driver-module-name="$module_name") data-source add --jndi-name=java:/jboss/"$ds_jndi_name" --name="$pool_name" \ --connection-url="$connection_url"--driver-name="$driver_name" \ --user-name="$user" --password="$password" :reload run-batch exit EOF }
El código interior de un Heredoc sí puede indentarse sin problemas, pero si estamos trabajando con scripts algo largos tener unas líneas correctamente indentadas y otras no puede resultar algo confuso y tedioso a la hora de leer.
Para solucionarlo y poder indentar las líneas con las directivas iniciaremos el HereDoc con <<-EOF, por ejemplo:
create_datasource(){ $JBOSS_HOME/bin/jboss-cli.sh --connect <<-EOF batch :take-snapshot() /subsystem=datasources/jdbc-driver=\ "$driver-name":add(driver-name="$driver_name",driver-module-name="$module_name") data-source add --jndi-name=java:/jboss/"$ds_jndi_name" --name="$pool_name" \ --connection-url="$connection_url"--driver-name="$driver_name" \ --user-name="$user" --password="$password" :reload run-batch exit EOF }
Como vemos, ahora aparecerá perfectamente alineado e indentado todo el código donde debe de estar.